String 删除文件中两个字符串之间的文本
我正在尝试在unix上删除不同行上字符串之间的文本,因此使用sed或awk的解决方案是理想的: 文本样本:String 删除文件中两个字符串之间的文本,string,text,replace,between,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) 有几件事: 我要删除的行总是以xxx开头 我想删除,直到下一行以字符串开头(即不是空格)或直到
xxx
(abc)
(def)
yyy
(abc)
(def)
xxx
(abc)
(def)
zzz
(abc)
(def)
我想以以下方式结束:
yyy
(abc)
(def)
zzz
(abc)
(def)
有几件事:
sed-i'
就地更新文件;否则,所需的结果将转到标准输出
hth是awk的替代方案
awk 'NR>4&&!(NR>=9&&NR<=12)' file
yyy
(abc)
(def)
zzz
(abc)
(def)
awk'NR>4&&!(NR>=9&&NR这太棒了……非常感谢。不过,我的文本中还有一些空行……有没有办法去掉它们,这样每个块之间就只有一个空行?嗯……您给出的示例显示了块之间有一个空行。上面的命令删除了“xxx”结尾处的一个后续空行,并包括其中一个空行block.FWIW它还将删除一个“xxx”在文件末尾没有尾随空行的块---考虑到您的示例,这看起来是可能的。您可以发布一个生成额外空行的示例输入吗?感谢您的回复…感谢您的支持…上面的相同块将在顶部生成一个空行,然后在yyy和zzz块之间生成两个空行。我使用的是GNU sed 4.2。1在linux上。不确定是否与此有关?
awk 'NR>4&&!(NR>=9&&NR<=12)' file
yyy
(abc)
(def)
zzz
(abc)
(def)