需要删除唯一时间戳:“ Thu Apr 11 13:19:02 2019” : “日期为2019年4月11日星期四13:19:02的日志文件已导入。” 仅使用 sed 命令(必要条件)。
注意:请注意,输入文件包含两个短语!!!
https://unix.stackexchange.com/questions/88382/using-sed-to-delete-everything-between-two-words
/^Log file dated/,/have been imported./{/^Log file dated/!{/have been imported./!d}}
不幸的是,当我们在一个文件中有两个词组时,此方法不起作用。
答案 0 :(得分:0)
只需删除两个短语之间的任何内容即可。
s/Log file dated .* have been imported./Log file dated have been imported/
答案 1 :(得分:0)
gnu sed,如果“ s”文件中的数据
sed -E 's/\s\w+\s\w+\s[123][0-9]\s([0-9][0-9]:?){3}\s[0-9]{4}\b//' s
perl,
$s= "Log file dated Thu Apr 11 13:19:02 2019 have been imported."
$s =~ s/\s\w+\s\w+\s[123][0-9]\s\d\d:\d\d:\d\d\s\d{4}\b//
print $s
答案 2 :(得分:0)
感谢帮助!
这是我的同事发现的另一种工作方法,该方法将“ [TIMESTAMP]”文本放在唯一的时间戳上:
s/[A-Za-z]\{3\}.[A-Za-z]\{3\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}/[TIMESTAMP]/g
在bash控制台中测试:
echo "Log file dated Thu Apr 11 13:19:02 2019 have been imported." | sed 's/[A-Za-z]\{3\}.[A-Za-z]\{3\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}.[0-9]\{1,\}/[TIMESTAMP]/g'
Input text: "Log file dated Thu Apr 11 13:19:02 2019 have been imported."
Output text: "Log file dated [TIMESTAMP] have been imported."