我有一个文本文件(更正确地说是“德国风格” CSV文件,即用分号分隔的十进制逗号),该文件在每行上都有一个日期和一个测量值。
在继续工作之前,我想消除一些错误的值。我想将这些剪切存储在一些脚本中,以便记录我的更正,如有必要,我可以重播这些更正。

这些行看起来像这样:

28.01.2005 14:48:38;5,166
28.01.2005 14:50:38;2,916
28.01.2005 14:52:38;0,000
28.01.2005 14:54:38;0,000
(long stretch of values that should be removed; could also be something else beside 0)
01.02.2005 00:11:43;0,000
01.02.2005 00:13:43;1,333
01.02.2005 00:15:43;3,250

现在,我想存储一个开始和结束模式的列表,例如28.01.2005 14:52:38 + 01.02.2005 00:11:43,脚本将剪切匹配这些开始/结束对以及它们之间的所有内容的行。

我正在考虑黑客awk脚本,但也许我想念一个已经存在的工具。

最佳答案

看看sed:

sed '/start_pat/,/end_pat/d'

会删除start_patend_pat(含)之间的行。

要删除多个这样的对,可以将它们与多个-e选项结合使用:
sed -e '/s1/,/e1/d' -e '/s2/,/e2/d' -e '/s3/,/e3/d' ...

关于unix - 从文件中删除给定模式之间的行(使用Unix工具),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1996585/

10-11 03:34