从文件中删除给定模式之间的行(使用Unix工具)

Flo*_*enn 7 unix lines

我有一个文本文件(更准确地说,是一个"德式"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
Run Code Online (Sandbox Code Playgroud)

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

我正在考虑攻击一个awk脚本,但也许我错过了一个已经存在的工具.

Alo*_*hal 21

看看sed:

sed '/start_pat/,/end_pat/d'
Run Code Online (Sandbox Code Playgroud)

将删除start_patend_pat(包括)之间的行.

要删除多个此类对,可以将它们与多个-e选项组合使用:

sed -e '/s1/,/e1/d' -e '/s2/,/e2/d' -e '/s3/,/e3/d' ...
Run Code Online (Sandbox Code Playgroud)