删除包含日期和另一个表达式的行

时间:2012-06-26 05:18:13

标签: linux sed

对不起我的简单问题。但我正在寻找一种方法来删除文件中的行,该文件以包含2或3个大写字母的字符串开头,并且还包含日期。例如:

ABC/ Something comes here, 29/1/2001.

在编写此类脚本的第一步中,我使用此代码查找并显示包含日期的行,但它不起作用。

sed -e 's/[0-9]+\/[0-9]+\/[0-9]+//' myfile.txt

这段代码有什么问题,我应该如何改变它来做我想做的事?

贝斯茨。

2 个答案:

答案 0 :(得分:1)

sed -r -e '/[A-Z]+.*[0-9]+\/[0-9]+\/[0-9]+/p;d' # on Mac OSX: sed -E -e ...

然后只删除行做类似......

'/[A-Z]+.*[0-9]+\/[0-9]+\/[0-9]+/d'

答案 1 :(得分:1)

我会尝试:

sed -e '/^[A-Z]\{2,3\}.*[0-9]\{1,2\}\/[0-9]\{1,2\}\/[0-9]\{4\}/ d' input-file

说明:

^                  Match at the beginning of the pattern.
[A-Z]\{2,3\}       Match two or three uppercase ASCII letters.
.*                 Match anything.
[0-9]\{1,2\}\/     Match the day, one or two digits, and the separator.
[0-9]\{1,2\}\/     Same match for the month.
[0-9]\{4\}         Match four digits for the date.
d                  If previous regexp matched, delete the line.