文章目录

  • 一、sed命令会从文件或者标准输入中一次读取一行数据,将其复制到缓冲区,然后读取命令行或者脚本的编辑子命令,对缓冲区中的文本行进行编辑。重复此过程,一直到所有的文本行都处理完毕
    • 1.工作原理
    • 2.sed语法:
    • 1)常用的选项:
    • 2)模式空间中的编辑操作
      • 1.地址定界
      • 2.常用编辑命令
    • 3.sed扩展
    • 4.sed练习

一、sed命令会从文件或者标准输入中一次读取一行数据,将其复制到缓冲区,然后读取命令行或者脚本的编辑子命令,对缓冲区中的文本行进行编辑。重复此过程,一直到所有的文本行都处理完毕

1.工作原理


sed命令将当前处理的行读入模式空间(pattern space)进行处理(除非之前的命令删除了该行),sed处理完一行就将其从模式空间中删除,然后将下一行读入模式空间,进行处理、显示。处理完文件的最后一行,sed便结束运行。
sed在临时缓冲区(模式空间)对文件进行处理,所以不会修改原文件,除非显示指明-i选项。

2.sed语法:

sed [option] command file

1)常用的选项:

-n 不输出模式空间中的内容
-i 直接编辑原文件,默认不对原文件进行操作
-e 可以使用多个命令(脚本)进行操作
-f 将sed命令写在一个文件内,从指定的文本中读取处理脚本
-r: 使用扩展正则表达式

2)模式空间中的编辑操作

1.地址定界

1.1 #:#为数字,指定要进行处理操作的行

[root@node1 ~]# sed -n '5 p' /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

1.2 $:表示最后一行,多个文件进行操作的时候,为最后一个文件的最后一行

[root@node1 ~]# sed -n '$ p' /etc/passwd
bob:x:993:776::/home/bob:/bin/bash

1.3 /regexp/:表示能够被regexp匹配到的行,regexp及基于正则表达式的匹配

[root@node1 ~]# sed -n "/root/ p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

1.4 /regexp/I:匹配时忽略大小写

[root@node1 ~]# sed -n "/yes/I p" yes.txt
yes   .txt YES
YES

1.5 %regexp%: 任何能够被regexp匹配到的行,换用%(用其他字符也可以,如:#)为边界符号

[root@node1 ~]# sed -n '\%^root%,/^bin/ p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

1.6 addr1,addr2:指定范围内的所有的行(范围选定)
常用地址定界表示方式:
a)0,/regexp/:从起始行开始到第一次能够被regexp匹配到的行
b)/regexp/,/regexp/:被模式匹配到的行内的所有的行

[root@node1 ~]# sed -n "1,3 p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@node1 ~]# sed -n "/^root/,/^bin/ p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

1.7 first~step:指定起始的位置及步长,例如:1~2表示1,3,5…

[root@node1 ~]# sed -n "1~2 p" /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

1.8 addr1,+N:指定行以及以后的N行
addr1,~N:指定行开始的N行

[root@node1 ~]# sed -n '/^root/,+2 p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@node1 ~]# sed -n '/^root/,~2 p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

注意:
1.如果没有指定地址,表示命令将应用于每一行
2.如果只有一个地址,表示将应用于这个地址匹配的所有行
3.如果指定了由逗号分开的两个地址,表示命令匹配第一个地址和第二个地址之间(包括这两行)
4.如果地址后面跟有!,表示命令将应用于不匹配该地址的所有行

[root@node1 ~]# sed -n '3,$ ! p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

2.常用编辑命令

1)d:删除匹配到的行
2)p:打印模式空间中的内容
3)a \text:append,表示在匹配到的行之后追加内容
4)i \text:insert,表示在匹配到的行之前追加内容
5)c \text:change,表示把匹配到的行和给定的文本进行交换
6)s/regexp/replacement/flages:查找替换,把text替换为regexp匹配到的内容(其中/可以用其他字符代替,例如@)
其他编辑命令:
r 读入文件内容追加到匹配行后面
R 读入文件一行内容追加到匹配行后面
常用的flages:
g:全局替换,默认只替换第一个
i: 不区分大小写
p:如果成功替换则打印
7)y :y/source/dest/ 固定长度替换,要求替换的字符串长度相等
8)w /path/to/somefile:将匹配到的文件另存到指定的文件中

2.1 d:删除匹配到的行

[root@node1 ~]# sed '5,$ d' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

2.2 a \text:append,表示在匹配到的行之后追加内容

[root@node1 ~]# sed  '/^root/ a after' /etc/passwd
root:x:0:0:root:/root:/bin/bash
after

i \text:insert,表示在匹配到的行之前追加内容

[root@node1 ~]# sed  '/^root/ i before' /etc/passwd
before
root:x:0:0:root:/root:/bin/bash

c \text:change,表示把匹配到的行和给定的文本进行交换

[root@node1 ~]# sed  '/^root/ c change' /etc/passwd
change
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

2.3 s/regexp/replacement/flages:查找替换,把text替换为regexp匹配到的内容(其中/可以用其他字符代替,例如@)

sed 's/north/hello/' datafile --替换每行第一个north
sed 's/north/hello/g' datafile --全部替换
sed '1 s/north/hello/g' datafile --替换第一行所有的north
sed '1 s/north/hello/' datafile --替换第一行第一个north
sed '1 s/north/hello/ 2' datafile --只替换第一行第二个north

巧用替换删除内容(不是删除行,是删除行中的字符串)

sed 's/north//' datafile --删除所有行的第一个north
sed 's/north//g' datafile --删除全部的north
sed '1 s/north//2' datafile --删除第一行第二个
sed 's/^.//' datafile --删除每行第一个字母
sed 's/^\(..\)./\1/' datafile --删除第3个字母
sed 's/^\<[a-Z]*[a-Z]\>//' datafile --删除每行第一个单词

2.4 w /path/to/somefile:将匹配到的文件另存到指定的文件中

sed  '/^root/ w /root/1.txt' /etc/passwd

3.sed扩展

特殊符号:
! 对指定行以外的所有行应用命令
= 打印当前行行号
& 代表被替换的内容
: 实现一行命令语句可以执行多条sed命令
{} 对单个地址或范围执行批量操作
+ 地址访问内用到的符号,做加法运算

4.sed练习

创建文件datafile
datafile内容如下:
northwest NW Charles Main 3.0 .98 3 34
western WE Sharon Gray 5.3 .97 5 23
southwest SW Lewis Dalsass 2.7 .8 2 18
southern SO Suan Chin 5.1 .95 4 15
southeast SE Patricia Hemenway 4.0 .7 4 17
eastern EA TB Savage 4.4 .84 5 20
northeast NE AM Main Jr. 5.1 .94 3 13
north NO Margot Weber 4.5 .89 5 9
central CT Ann Stephens 5.7 .94 5 13

[root@node1 ~]# cat > datefile <<EOF
> northwest NW Charles Main      3.0 .98 3 34
> western  WE Sharon Gray      5.3 .97 5 23
> southwest SW Lewis Dalsass      2.7 .8 2 18
> southern SO Suan Chin      5.1  .95 4 15
> southeast SE      Patricia Hemenway    4.0  .7  4  17
> eastern  EA  TB Savage       4.4  .84  5  20
> northeast  NE  AM Main Jr.       5.1  .94  3  13
> north   NO  Margot Weber       4.5  .89 5   9
> central  CT  Ann Stephens         5.7  .94   5  13
> EOF

1、只打印找到north的行
2、删除第三行,其余行输出到屏幕
从第3行到最后一行都删除,将剩余部分输出到屏幕
3、找到datafile中的所有west并替换成north,将替换后的内容输出到屏幕。
4、所有的Hemenway所在的位置都用Jones来取代,而且只有改变的行被打印
5、打印在west和east之间的模式范围内所有行
6、把指定的行north写入到一个文件newfile中
7、在north行后添加“central CT Ann Stephens 5.7 .94 5 13”

[root@node1 ~]# sed -n '/north/ p' datefile
northwest NW Charles Main      3.0 .98 3 34
northeast  NE  AM Main Jr.       5.1  .94  3  13
north   NO  Margot Weber       4.5  .89 5   9
[root@node1 ~]# sed '3 d' datefile
northwest NW Charles Main      3.0 .98 3 34
western  WE Sharon Gray      5.3 .97 5 23
southern SO Suan Chin      5.1  .95 4 15
southeast SE      Patricia Hemenway    4.0  .7  4  17
eastern  EA  TB Savage       4.4  .84  5  20
northeast  NE  AM Main Jr.       5.1  .94  3  13
north   NO  Margot Weber       4.5  .89 5   9
central  CT  Ann Stephens         5.7  .94   5  13
[root@node1 ~]# sed '3,$ d' datefile
northwest NW Charles Main      3.0 .98 3 34
western  WE Sharon Gray      5.3 .97 5 23
[root@node1 ~]# sed 's/west/north/g' datefile
northnorth NW Charles Main      3.0 .98 3 34
northern  WE Sharon Gray      5.3 .97 5 23
southnorth SW Lewis Dalsass      2.7 .8 2 18
southern SO Suan Chin      5.1  .95 4 15
southeast SE      Patricia Hemenway    4.0  .7  4  17
eastern  EA  TB Savage       4.4  .84  5  20
northeast  NE  AM Main Jr.       5.1  .94  3  13
north   NO  Margot Weber       4.5  .89 5   9
central  CT  Ann Stephens         5.7  .94   5  13
[root@node1 ~]# sed -n 's/Hemenway/Jones/g p' datefile
southeast SE      Patricia Jones    4.0  .7  4  17
[root@node1 ~]# sed '/north/ w newfile' datefile
northwest NW Charles Main      3.0 .98 3 34
western  WE Sharon Gray      5.3 .97 5 23
southwest SW Lewis Dalsass      2.7 .8 2 18
southern SO Suan Chin      5.1  .95 4 15
southeast SE      Patricia Hemenway    4.0  .7  4  17
eastern  EA  TB Savage       4.4  .84  5  20
northeast  NE  AM Main Jr.       5.1  .94  3  13
north   NO  Margot Weber       4.5  .89 5   9
central  CT  Ann Stephens         5.7  .94   5  13
[root@node1 ~]# sed '/north/ a central  CT  Ann Stephens         5.7  .94   5  13' datefile
northwest NW Charles Main      3.0 .98 3 34
central  CT  Ann Stephens         5.7  .94   5  13
western  WE Sharon Gray      5.3 .97 5 23
southwest SW Lewis Dalsass      2.7 .8 2 18
southern SO Suan Chin      5.1  .95 4 15
southeast SE      Patricia Hemenway    4.0  .7  4  17
eastern  EA  TB Savage       4.4  .84  5  20
northeast  NE  AM Main Jr.       5.1  .94  3  13
central  CT  Ann Stephens         5.7  .94   5  13
north   NO  Margot Weber       4.5  .89 5   9
central  CT  Ann Stephens         5.7  .94   5  13
central  CT  Ann Stephens         5.7  .94   5  13
[root@node1 ~]# sed  -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config

练习二:
datafile内容如下
Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300
Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500
Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400
Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700
Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900
Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100
Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200
Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500
Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700
James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600
William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500
Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500
Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000
Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500
Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000
Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350
Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600
Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900

[root@node1 ~]# cat > datefile <<EOF
> datafile内容如下
> Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300
> Betty Boop:245-836-8357:635 Cutesy Lane, Hollywood, CA 91464:6/23/23:14500
> Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400
> Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700
> Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900
> Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100
> Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100
> Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
> Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
> Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
> Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
> Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200
> Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500
> Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700
> James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
> Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
> Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600
> William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500
> Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500
> Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000
> Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500
> Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000
> Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350
> Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600
> Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200
> Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
> Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900
> EOF

sed练习:
1.把Jon的名字改成Jonathan.
2.删除头三行
3.显示5-10行
4.删除包含Lane的行.
5.显示所有生日在November-December之间的行
6.把三个星号(***)添加到以Fred开头的行
7.用JOSE HAS RETIRED取代包含Jose的行
8.把Popeye的生日改成11/14/46
9.删除所有空白行

[root@node1 ~]# sed -n 's/Jon/Jonathan/g p' datefile
Jonathan DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100
[root@node1 ~]# sed '1,3 d' datefile
Igor Chevsky:385-375-8395:3567 Populus Place, Caldwell, NJ 23875:6/18/68:23400
Norma Corder:397-857-2735:74 Pine Street, Dearborn, MI 23874:3/28/45:245700
Jennifer Cowan:548-834-2348:583 Laurel Ave., Kingsville, TX 83745:10/1/35:58900
Jon DeLoach:408-253-3122:123 Park St., San Jose, CA 04086:7/25/53:85100
Karen Evich:284-758-2857:23 Edgecliff Place, Lincoln, NB 92086:7/25/53:85100
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
Fred Fardbarkle:674-843-1385:20 Parak Lane, DeLuth, MN 23850:4/12/23:780900
Lori Gortz:327-832-5728:3465 Mirlo Street, Peabody, MA 34756:10/2/65:35200
Paco Gutierrez:835-365-1284:454 Easy Street, Decatur, IL 75732:2/28/53:123500
Ephram Hardy:293-259-5395:235 CarltonLane, Joliet, IL 73858:8/12/20:56700
James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
Lesley Kirstin:408-456-1234:4 Harvard Square, Boston, MA 02133:4/22/62:52600
William Kopf:846-836-2837:6937 Ware Road, Milton, PA 93756:9/21/46:43500
Sir Lancelot:837-835-8257:474 Camelot Boulevard, Bath, WY 28356:5/13/69:24500
Jesse Neal:408-233-8971:45 Rose Terrace, San Francisco, CA 92303:2/3/36:25000
Zippy Pinhead:834-823-8319:2356 Bizarro Ave., Farmount, IL 84357:1/1/67:89500
Arthur Putie:923-835-8745:23 Wimp Lane, Kensington, DL 38758:8/31/69:126000
Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350
Jose Santiago:385-898-8357:38 Fife Way, Abilene, TX 39673:1/5/58:95600
Tommy Savage:408-724-0140:1222 Oxbow Court, Sunnyvale, CA 94087:5/19/66:34200
Yukio Takeshida:387-827-1095:13 Uno Lane, Ashville, NC 23556:7/1/29:57000
Vinh Tranh:438-910-7449:8235 Maple Street, Wilmington, VM 29085:9/23/63:68900
[root@node1 ~]# sed -n '5,10 p' /etc/passwd
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@node1 ~]# grep ':1[12]/' datefile
Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
[root@node1 ~]# sed -n '/:1[12]\// p' datefile
Steve Blenheim:238-923-7366:95 Latham Lane, Easton, PA 83755:11/12/56:20300
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
Karen Evich:284-758-2867:23 Edgecliff Place, Lincoln, NB 92743:11/3/35:58200
James Ikeda:834-938-8376:23445 Aster Ave., Allentown, NJ 83745:12/1/38:45000
Barbara Kertz:385-573-8326:832 Ponce Drive, Gary, IN 83756:12/1/46:268500
[root@node1 ~]# sed -r -n '/Popeye/ s#([0-9]{,2}/){2}[0-9]{,2}#11/14/16# p' datefile
Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:11/14/16:22350
[root@node1 ~]# sed '/^$/ d' datefile
====================================================================================      sed给文本文件加行号
====================================================================================
1、用cat很简单就可以实现
# cat -n test1  one2    two3    three4  four# cat -n test | sed -n -r 's/^[[:space:]]+//p'
1   one
2   two
3   three
4   four2、  grep处理
# grep -n ".*" test | sed -n 's/:/\t/p'
1   one
2   two
3   three
4   four3、sed处理
# sed = test | sed -n 'N;s/\n/\t/p'
1   one
2   two
3   three
4   four=      Print the current line number.N:Add a newline to the pattern space, then append the next line of input to the pattern space. If there is no more input then sed exits without processing any more commands.N命令:将下一行添加到pattern space中。将当前读入行和用N命令添加的下一行看成“一行”。 \n是表示换行,\t表示一个制表符4、awk处理
# awk '{print NR,$0}' test

【文本三剑客之一sed】相关推荐

  1. sed 插入多行_文本三剑客之sed

    文本三剑客之sed sed介绍 sed 简介 sed 流编辑器.sed的全称:Stream EDitor 简称sed 是个流编辑器,sed是一个行编辑器.首先它是个流编辑器是实现文本流编辑的,所谓行编 ...

  2. Linux文本三剑客之sed仗剑走天涯

    一,sed是什么? sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.对文件内容逐行(行编辑器,一行读取一次,对行编辑)进行处理调用操作并显示到STDOUT,常用 ...

  3. Linux文本三剑客之sed

    sed命令详解 一.简介 二.工作原理 三.用法 1.地址定界 2.编辑命令 四.实例及详解 一.简介 sed是一种新型的,非交互式的流式(从上往下读取一行处理一行)的编辑器 可以执行vi和ex相同的 ...

  4. 文本三剑客:sed编辑器

    sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流. sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本 ...

  5. 文本三剑客之sed命令--文本替换;grep命令---文本过滤

    目录 1.sed简介 2.sed的p命令--打印匹配行 3.sed的d命令--删除指定行 4.sed的a命令--在匹配行后面追加 5.sed的i命令--在匹配行前面插入 6.sed的c命令--整行替换 ...

  6. 文本三剑客之——sed编辑器

    sed编辑器 sed编辑器 sed基础语法 sed查询 sed删除 sed 替换 sed 插入 sed编辑器 sed是文本处理工具,依赖于正则表达式,可以读取文本内容,工具指定条件对数据进行添加.删除 ...

  7. 【文本三剑客】SED

    SED 一.sed编辑器 1.2sed简介 1.3sed工作流程 1.4sed命令格式 1.5常用选项 1.6常用操作 二.sed实验 2.1打印内容 2.2删除行 2.3替换 2.4插入 一.sed ...

  8. linux 匹配文本中的ip,linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)

    运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验 ...

  9. 文本处理三剑客之sed(流编辑器)

    文本处理三剑客之sed(流编辑器) - 行编辑器 把当前处理的行存储在临时缓冲区,称为模式空间,然后把模式空间的内容送往屏幕,一行一行的处理,主要用来编辑一个或者多个文件. - 用法 sed [opt ...

最新文章

  1. Android动态替换dex,Android DexClassLoader动态加载与插件化开发
  2. javascript写坦克大战
  3. Webclient UI view里Javascript的注释问题
  4. 劳心者、劳力者或CEO、CTO各得其所,足矣
  5. 解决 -- 代码没有问题时接口报错:Status Code: 404 Not Found
  6. python一个对象只能被一个变量引用吗_Python中的变量、对象、引用
  7. python-socket模块介绍
  8. spring06Aop
  9. 孙鑫VC学习笔记:第十六讲 (一) 利用事件对象实现线程间的同步
  10. qt 创建第二个ui_Qt自定义提示信息弹窗
  11. java交接文档_如何写好交接文档
  12. 绿色版本chrome设为默认浏览器
  13. 手把手教你搭建一台永久运行的个人服务器
  14. nginx代理百度地图,实现内网展示百度地图
  15. 如何把无限循环小数转换成分数形式
  16. python小游戏——魂斗罗这是你的童年吗?
  17. 计算机几大管理器,电脑里的任务管理器的快捷键是按哪几个键?
  18. pimple学习(1)pimple的使用
  19. Netty 中的粘包和拆包详解
  20. 游戏化方式学习Git指令

热门文章

  1. 考研复试计算机英文介绍,2017年考研复试计算机专业英文自我介绍.doc
  2. Ubuntu安装开源终端工具Tabby
  3. 深入理解Java虚拟机(第三版)--经典垃圾收集器
  4. LGD计划扩增OLED TV面板产能
  5. 今日头条财经部门后台研发实习生面试
  6. w ndows8重装,如何重装windows8系统-系统城
  7. 帧结构和物理资源(RB,PRB,VRB,REG,RBG)
  8. 系统日志管理——journalctl
  9. 计算机网络中rtd,网络RTK与网络RTD系统简介.ppt
  10. 基于WEB信息管理系统测试时应考虑的因素有哪些