【发布时间】:2015-01-19 10:03:58
【问题描述】:
问题是我希望使用 SED 删除一行中字符串之间的所有文本。我理解使用:sed -i 's/str1.*str2//' file.dat删除str1和str2之间的文字,包括str1和str2,但是我的行有str1和str2在行上重复了很多次,我想删除每一对之间的文字。我上面的尝试删除了 str1 的第一个实例和 str2 的最后一个实例之间的所有文本。希望能帮助您理解执行此操作的功能。
此外,我想在文件的所有行中重复此操作,并且不知道 str1、str2 对出现在每行上多少次。因人而异。
亲切的问候
附加编辑 - 希望不要进入火焰墙!
一个例子可能有用;到目前为止无法理解答案,对不起。
对于文件 example.dat 中的单行;
bla.bla.TextOfUnknownLength.bla.bla 1023=3 290=1 336=17 273=07:59:57.833 276=K 278=0 bla.bla.TextOfUnknownLength.bla.bla 1023=20 290=2 336=7 273=07:59:57.833 276=K 278=0 bla.bla.TextOfUnknownLength.bla.bla ...
我希望在所有情况下都从 1023= 删除到 278=(但不是 278= 之后的 0),1023= 和 278= 之间的文本可以在一行中出现多次并且长度未知。
文件中还有很多行,我想在所有行中运行它。
HS
【问题讨论】:
-
@Boris Fedorquis 对该问题的回答在这里不起作用,因为它是模式之间的匹配行,而 OP(据我所知)在单行上。