【一练】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:

 

评分:0

我来说两句

Open Toolbar