对不起我的简单问题。但我正在寻找一种方法来删除文件中的行,该文件以包含2或3个大写字母的字符串开头,并且还包含日期。例如:
ABC/ Something comes here, 29/1/2001.
在编写此类脚本的第一步中,我使用此代码查找并显示包含日期的行,但它不起作用。
sed -e 's/[0-9]+\/[0-9]+\/[0-9]+//' myfile.txt
这段代码有什么问题,我应该如何改变它来做我想做的事?
贝斯茨。
答案 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.