1.1sed查询
1.1.1根据行号查询
Last login: Tue Aug 15 19:46:48 2017 from10.0.0.1
[root@oldboyedu ~]# cat>person.txt<<EOF
> 101,oldboy,CEO
> 102,zhangyao,CTO
> 103,Alex,COO
> 104,yy,CFO
> 105,feixue,CIO
> EOF
1.1.1.1 显示第二行
[root@oldboyedu ~]# sed -n "2p" person.txt
102,zhangyao,CTO
1.1.1.2 显示最后一行
[root@oldboyedu ~]# sed -n '$p' person.txt
105,feixue,CIO
1.1.1.3 显示第一行到第四行
[root@oldboyedu ~]# sed -n '1,4p' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
1.1.2正则
1.1.2.1 显示出文件中包含oldboy或 yy的行
[root@oldboyedu ~]# sed -n '/oldboy|yy/p' person.txt
[root@oldboyedu ~]# sed -nr '/oldboy|yy/p' person.txt
101,oldboy,CEO
104,yy,CFO
1.1.2.2 显示这个文件的第1行到第4行
[root@oldboyedu ~]# sed -n '/101/,/104/p' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
1.1.2.3 从Alex行到yy行
[root@oldboyedu ~]# sed -n '/Alex/,/yy/p' person.txt
103,Alex,COO
104,yy,CFO
1.1.2.4 查找第一行 三 五行
[root@oldboyedu ~]# sed -n '1p;3p;5p' person.txt
101,oldboy,CEO
103,Alex,COO
105,feixue,CIO
1.2sed增加
1.2.1增加单行文本
1.2.1.1 cat
[root@oldboyedu ~]# cat >>person.txt <<EOF
> 106,lidao,UFO
> 107,bingbing,CEO
> EOF
1.2.1.2
1.2.1.3 sed的命令追加
[root@oldboyedu ~]# sed '2a oldboyedu.m' person.txt
101,oldboy,CEO
102,zhangyao,CTO
oldboyedu.m
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
[root@oldboyedu ~]# sed '$a 106,lidao\n107,bingbing,CEO' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao
107,bingbing,CEO
[root@oldboyedu ~]# sed '$a 106\n107' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
106
107
1.3sed删除
1.3.1删除
[root@oldboyedu ~]# sed '/oldboy/d' person.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
1.3.2排除
[root@oldboyedu ~]# grep -v "oldboy" person.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
1.3.3排除或取反
[root@oldboyedu ~]# awk '!/oldboy/' person.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
1.3.4sed取反(!)
[root@oldboyedu~]# sed -n '/oldboy/!p' person.txt
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,lidao,UFO
107,bingbing,CEO
1.4替换
1.4.1文本替换
[root@oldboyedu ~]# sed 's#[0-9]#oldboy#' person.txt
oldboy01,oldboy,CEO
oldboy02,zhangyao,CTO
oldboy03,Alex,COO
oldboy04,yy,CFO
oldboy05,feixue,CIO
oldboy06,lidao,UFO
oldboy07,bingbing,CEO
[root@oldboyedu ~]# sed 's#[0-9]#oldboy#g' person.txt
oldboyoldboyoldboy,oldboy,CEO
oldboyoldboyoldboy,zhangyao,CTO
oldboyoldboyoldboy,Alex,COO
oldboyoldboyoldboy,yy,CFO
oldboyoldboyoldboy,feixue,CIO
oldboyoldboyoldboy,lidao,UFO
oldboyoldboyoldboy,bingbing,CEO
[root@oldboyedu-39-nb~]# sed -r 's#(oldboy)+#101#' person.txt
[root@oldboyedu-39-nb~]# sed -r 's#(oldboy)+#101#' person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboyedu-39-nb~]# sed -ir.bak 's#(oldboy)+#101#' person.txt
[root@oldboyedu-39-nb~]# cat person.txt
oldboyoldboyoldboy,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboyedu-39-nb~]# ls -l person.txt*
-rw-r--r-- 1root root 86 Aug 16 12:05 person.txt
-rw-r--r-- 1root root 86 Aug 16 12:03 person.txtr.bak
[root@oldboyedu-39-nb~]#
[root@oldboyedu-39-nb~]# sed -ri.bak 's#(oldboy)+#101#' person.txt
[root@oldboyedu-39-nb~]# cat person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@oldboyedu-39-nb~]# ls -l person.txt*
-rw-r--r-- 1root root 71 Aug 16 12:06 person.txt
-rw-r--r-- 1root root 86 Aug 16 12:05 person.txt.bak
转载于:https://blog.51cto.com/13131277/1956767