删除文件中两个字符串之间的文本

时间:2017-06-30 22:08:46

标签: string text replace between

我试图在unix上的不同行上的字符串之间删除文本,因此使用sed或awk的解决方案将是理想的:

文字样本:

xxx
   (abc)
   (def)

yyy
   (abc)
   (def)

xxx
   (abc)
   (def)

zzz
   (abc)
   (def)

我想最终:

yyy
   (abc)
   (def)

zzz
   (abc)
   (def)

有几件事:

  1. 我想删除的行始终以xxx
  2. 开头
  3. 我想删除直到以字符串开头的下一行(即非空格)或直到下一个空行。
  4. 我目前在每个文本位之间需要一个空行。
  5. 有许多以xxx开头的文本块,我想删除每个块。

2 个答案:

答案 0 :(得分:0)

sed -i''  '/^xxx/,/^$/ d' myfile.txt

sed -i''更新文件;否则,所需的结果将转到stdout。

HTH

答案 1 :(得分:0)

awk替代品。

awk 'NR>4&&!(NR>=9&&NR<=12)' file
yyy
   (abc)
   (def)

zzz
   (abc)
   (def)

跳过前四行,而不是打印第9-12行。