【一练】sed/awk单行脚本练习(文本间隔)
上一篇 /
下一篇 2017-12-28 09:48:06
/ 个人分类:shell
1、文本间隔
(1)在每一行后面增加一空行。
>> cat num.txt
>> 11 1
11 111
12 123
1 23
>> sed 'G' num.txt 或 awk '{printf("%s\n\n",$0)}' num.txt
>> 11 1
11 111
12 123
1 23
(2)将文件原来的空行删除,并在每一行后面增加一空行。
>> cat num1.txt
>> 11 1
11 111
12 123
1 23
>> sed '/^$/d;G' num1.txt 或 awk '!/^$/{printf("%s\n\n",$0)}' num1.txt
>> 11 1
11 111
12 123
1 23
(3)在每一行后面增加两行空行。
>> sed 'G;G' num.txt 或 awk '{printf("%s\n\n\n",$0)}' num.txt
>> 11 1
11 111
12 123
1 23
(4) 删除文件所有的偶数行或奇数行。
删除偶数行:
>> sed -n '1~2p' num.txt 或 awk '{if(NR%2!=0){print $0}}' num.txt
>> 11 1
12 123
删除奇数行:
>> sed -n '2~2p' num.txt 或 awk '{if(NR%2==0){print $0}}' num.txt
>> 11 111
1 23
(5)在匹配样式“regex”的行之前插入一空行。
>> cat num2.txt
>> 1234
regex123
234
345regex
3456
>> sed '/regex/{x;p;x}' num2.txt 或 awk '{if(/regex/)printf("\n%s\n",$0);else print $0}' num2.txt
>> 1234
regex123
234
345regex
3456
(6)在匹配样式“regex”的行之后插入一空行。
>> sed '/regex/G' num2.txt 或 awk '{if(/regex/)printf("%s\n\n",$0);else print $0}' num2.txt
>> 1234
regex123
234
345regex
3456
(7)在匹配样式“regex”的前后行各插入一空行。
>> sed '/regex/{x;p;x;G}' num2.txt 或 awk '{if(/regex/)printf(\n"%s\n\n",$0);else print $0}' num2.txt
>> 1234
regex123
234
345regex
3456
收藏
举报
TAG: