BASH - 删除行并用空行替换它们

时间:2014-06-05 12:14:39

标签: linux bash awk sed

我有一个文本文件,我想删除一些行用空白替换它们。 示例:如果我有此文件:

  
      
  1. 关闭新一天的迷雾我跑
  2.   
  3. 从新的一天的雾中消失
  4.   
  5. 我来了
  6.   
  7. 我打猎
  8.   

我想要这个输出:

  
      
  1. 关闭新一天的迷雾我跑
  2.   
  3.   
  4.   
  5. 我打猎
  6.   

我已经尝试过这个命令,但没有空行:

sed -i "$deb,$end"'d' body.txt(其中$ deb和$ end是行数)

对于如何使用bash,sed或awk获取此输出格式,您有什么线索吗? (我不能使用Perl)

谢谢!

2 个答案:

答案 0 :(得分:2)

不是删除,只需用空值替换该行:

sed -i "${deb},${end}s/.*//" body.txt 

答案 1 :(得分:0)

试试这个awk命令,

awk -v var1=2 -v var2=3 'NR==var1{gsub (/.*/,"")} NR==var2{gsub (/.*/,"")}1' file

示例:

$ awk -v var1=2 -v var2=3 'NR==var1{gsub (/.*/,"")} NR==var2{gsub (/.*/,"")}1' rr.txt
        Off through the new day's mist I run


        I hunt

OR

$ awk -v var1=$deb -v var2=$end 'NR==var1{gsub (/.*/,"")} NR==var2{gsub (/.*/,"")}1' rr.txt
        Off through the new day's mist I run


        I hunt