sed命了学习

来源:互联网 发布:2016网络信息安全事件 编辑:程序博客网 时间:2024/05/02 04:18

              sed学习


1、打印第n行,n为任意整数
sed -n 'np' /etc/passwd
2、打印第2行到第4行的内容
sed -n '2,4p' /etc/passwd
3、打印匹配某字符的内容
sed -n '/root/p' /etc/passwd
4、n+匹配字符串,意思为从第n行开始直到找到匹配的字符串,中间的全部打印出来。
sed -n 'n,/root/p' /etc/passwd
5、匹配元字符,必须使用反斜线\屏蔽其特殊含义。
sed -n '/\$/p' /etc/passwd
6、显示整个文件内容
sed -n '1,$p' /etc/passwd
7、匹配任意字母,打印含有“字母”的行
sed -n '/.*sh/p' /etc/passwd       打印所有含有sh字符串的行
sed -n '/.*sh$/p' /etc/passwd      打印尾字母为sh的行
8、打印首行或者末行
sed -n '1p' /etc/passwd
sed -n '$p' /etc/passwd
9、只打印行号
sed -n '/.*sh/=' /etc/passwd
10、打印匹配行并打印行号
sed -n -e '/.*sh/p' -e '/.*sh/=' /etc/passwd
11、插入一行,在sync下一行插入用a\,上一行插入用i\。其中匹配字符串也可以用行号来表示。
sed "/sync/a\my name is aaa" /etc/passwd  下一行
sed "/sync/i\my name is aaa" /etc/passwd 上一行
插入多行
sed "/sync/a\my name is aaa \naaa is me" /etc/passwd  下一行
sed "/sync/i\my name is aaa \naaa is me" /etc/passwd   上一行
sed脚本格式
#!/bin/sed -f
#insert.sh
/sync/ a\
myname is aaa \naaa is me
保存退出。赋予执行权限。./insert.sh /etc/passwd
12、替换某行。
sed "/sync/c\myname is bbb" /etc/passwd 替换其中含有sync的字符串
脚本格式
#!/bin/sed -f
#replace.sh
/sync/ c\
myname is bbb
4 c\
aaa is ccc
保存退出,赋予执行权限。./replace.sh /etc/passwd
13、删除文本
删除第1行 sed '1d' /etc/passwd
删除2-4行 sed '2,4d' /etc/passwd
删除末行  sed '$d' /etc/passwd
删除匹配行 sed '/sync/d' /etc/passwd
删除空行   sed '/^$/d' /etc/passwd
替换某字符串 sed 's/sync/ddd/' /etc/passwd   只替换每行出现的第一个匹配字符串
             sed 's/sync/ddd/g' /etc/passwd   替换所有的匹配字符串
删除字符串  sed 's/\///' /etc/passwd          删除每行出现的第一个元字符/元字符,如果要全部删除,后面加g参数。
            sed 's/.*bash$//g' /etc/passwd     删除所有以bash结尾的行
            sed 's/^root.*//g' passwd          删除所有以root开头的行
将替换的结果写入输出结果中     sed 's/root/ROOT/w sed.out' passwd
在字符串前插入字符串             sed -n 's/root/ROOT &/p' passwd
在字符串root后插入字符串ROOT             sed -n 's/root/& ROOT/p' passwd
14、将sed结果写入文件命令
sed '1,2 w aaa' passwd      将passwd的1.2行写入aaa文件中
sed '/root/ w bbb' passwd    将含有字符串root的行写入到文件bbb中。
15、附加文本
sed '/root/r bbb' passwd     将文本bbb中的内容附加到root匹配的行下
16、匹配首次后退出
sed '/.root.*/q' passwd      匹配文件中含有root字符串的行,匹配第一次后退出匹配。
17、替换控制字符,一般windows传到linux下时,打开后会出现^M的字样
sed 's/##//g;s/^0*//g;s/^M//g' dos.txt      这里第一替换dos.txt中出现的##,第个替换行首出现的0,不论有几个全部替换,第三个替换文件中的控制字符^M.
                                             因没有发现此类文档,故未做深入研究。
cat 1.txt |sed 's/-*//g;1d;$d;/^$/d' |awk '{print $1}'      删除文本1.txt的-----的行,在删除第一行,删除最后一行,删除空白行,用awk打印第1列即为所需。

1.txt内容如下:
Database Size(MB) DataCreated
---------------------------
GOSOUTH    2244   12/11/97
TRISUD     5632    8/9/99
(2 rows affected)

18.附加文本
dos。txt内容如下:
AC456
AC492169
AC9967
AC88345
在每行后面添加 passwd
sed 's/[0-9][0-9]*/& passed/g' dos.txt

19、从shell向sed传值
#NAME="It's a go situation"
#REPLACE=“GO”
#echo $NAME |sed "s/go/$REPLACE/g"      切记这里是双引号。
从sed输出中设置shell变量
#NAME="it's a go situation"
#REPLACE="GO"
#NEW_NAME=`echo $NAME |sed "s/go/$REPLACE/g"`   这里也是双引号

20、收集的一些命令集:
's/\.$//g'   删除以句点结尾行
'-e /abcd/d'  删除包含abcd的行
's/[][][]*/[]/g'  删除1个以上空格用1个空格代替
's/^[][]*//g' 删除行首空格
's/\.[][]*/[]/g'   删除句点后跟2个或更多空格,以一个空格代替
'/^$/d'   删除空行
's/^.//g'    删除第一个字符
's/COL\(...\)//g'  删除紧跟COL的后三个字母
's/^\///g'   从路径中删除第一个\
's/[]/[]//g'  删除所有空格并用tab键代替
's/^[]//g'   删除所有行首的tab键
's/[]*//g'   删除所有tab键

删除路径名第一个\符号   echo $PWD |sed 's/^\///g'
追加插入文本            echo "Mr wILLIS" |sed 's/Mr /& Bruce/g'
删除首字符               echo "accounts doc" |sed 's/^.//g'     返回:ccounts doc
删除文件扩展名           echo "accounts.doc" |sed 's/.doc//g'
增加文件扩展名           echo "accounts" |sed 's/$/.doc/g'     
替换字符系列             x="Department+playroll&Building G"
                         echo $x |sed 's/\+/of/g;s/\&/Located at/g'
sed完结。

原创粉丝点击