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

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2018-07-04  
1234567
891011121314
15161718192021
22232425262728
293031    

数据统计

  • 访问量: 4242
  • 日志数: 29
  • 建立时间: 2017-09-11
  • 更新时间: 2018-06-08

RSS订阅

Open Toolbar