1. 程式人生 > >shell sed 的一些用法

shell sed 的一些用法

shell

#1、替換

#將1.txt文件中的2017替換成2016顯示在屏幕上

sed "s/2017/2016/g" 1.txt

#將1.txt文件中的2017替換成2016顯示在屏幕上對文件徹底修改,加 i 修改進文件

sed -i "s/2017/2016/g" 1.txt

#Sed讀取系統變量,變量替換

DATE="2016"
sed  "s/2017/$DATE/g" 1.txt

#關閉SELinux,修改SELinux策略enforcing為disabled,查找SELINUX行,然後將其行enforcing值改成disabled、!s表示不包括SELINUX行:

sed -i "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
sed -i "/SELINUX/!s/enforcing/disabled/g" /etc/selinux/config


#2、打印

#打印1.txt文本第一行至第三行

sed -n "1,3p" 1.txt

#3打印1.txt文本中第一行與最後一行

sed -n "1p,$p" 1.txt


#3、刪除

#刪除第一行至第三行

sed ‘1,3d‘ 1.txt

#刪除匹配行至最後一行

sed ‘/2017/,$d‘ 1.txt

#刪除最後一行

sed ‘$d‘ 1.txt

#刪除最後6行(做6次刪除最後一行)

for i in {1..6};do sed -i ‘$d‘ 1.txt ;done

#刪除1.txt行前和行尾的任意空格:

sed ‘s/^[ \t]*//;s/[ \t]*$//‘ 1.txt

#刪除所有空格

sed ‘s/[ \t]//g‘ 1.txt


#4、添加字符

#在1.txt查找you所在行,並在其下一行添加me字符,a表示在其下一行添加字符串:

sed ‘/you/ame‘ 1.txt

#在1.txt查找you所在行,並在其上一行添加me字符,i表示在其上一行添加字符串:

sed ‘/you/ime‘ 1.txt

#在1.txt查找以you結尾的行尾添加字符串me,$表示結尾標識,&在Sed中表示添加:

sed ‘s/you$/&me/g‘ 1.txt

#在1.txt查找you的行,在其行首添加字符串me,^表示起始標識,&在Sed中表示添加:

sed ‘/you/s/^/&me/‘ 1.txt


#5、多個sed命令組合

#使用-e參數

sed -e ‘/www.jd.com/s/^/&1./‘ -e ‘s/www.jd.com$/&./g‘ 1.txt

#使用分號";"分割

sed -e ‘/www.jd.com/s/^/&1./;s/www.jd.com$/&./g‘ 1.txt


#6、插入空行

#每一行後邊插入一行空行

sed ‘/^$/d;G‘ 1.txt
sed ‘G‘ 1.txt

#每一行後邊插入兩行空行

sed ‘/^$/d;G;G‘ 1.txt
sed ‘G;G‘ 1.txt

#前三行每行後插入空行

sed ‘/^$/d;1,3G;‘ 1.txt

#第三行後插入空行

sed ‘/^$/d;3G;‘ 1.txt

#第三行後插入3行空行

sed ‘/^$/d;3{G;G;G}‘ 1.txt

#匹配行後插入空行

sed ‘/2017/G‘ 1.txt

#在匹配行前一行插入空行

sed ‘/2017/{x;p;x;}‘ 1.txt

#同時在匹配前後插入空行

sed ‘/2017/{x;p;x;G;}‘ 1.txt


#7、在1.txt每行前加入順序數字序號、加上制表符\t及.符號:

sed = 1.txt| sed ‘N;s/\n/ /‘
sed = 1.txt| sed ‘N;s/\n/\t/‘
sed = 1.txt| sed ‘N;s/\n/\./‘


#8、打印及刪除1.txt最後兩行:

sed ‘$!N;$!D‘ 1.txt
sed ‘N;$!P;$!D;$d‘ 1.txt


#9、合並上下兩行,也即兩行合並:

sed ‘$!N;s/\n/ /‘ 1.txt
sed ‘N;s/\n/ /‘ 1.txt


本文出自 “莫測之境” 博客,轉載請與作者聯系!

shell sed 的一些用法