2014-06-05 17 views
0

我有一個文本文件,我想刪除一些行將它們替換爲空白行。 例如:如果我有這樣的文件:BASH - 刪除行並將其替換爲空行

  1. 關通過新一天的薄霧我跑
  2. 關在新的一天的霧
  3. 我來
  4. 我打獵

我想這個輸出:

  1. 關通過新一天的薄霧我跑
  2. 我打獵

我已經嘗試過這個命令,但沒有空行:

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

對於如何使用bash,sed或awk獲取此輸出格式,您有任何線索嗎? (我不能使用Perl)

謝謝!

回答

2

而不是刪除的,只需更換用空值的行:

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

很好,謝謝! 我用這種格式在bash腳本中使用它(對不起,我沒有在第一篇文章中提到) 'sed -i「$ deb,$ end」's /.*//'body.txt' – debas

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 
+0

試試'NR var2 {print}'。 – Kaz

+0

我可以知道downvote的原因嗎? –

+0

@Kaz op也想要刪除的行,看看預期的輸出。 –