Unix:使用sed删除每一行的一部分

时间:2015-03-20 13:51:16

标签: linux unix sed

我正在尝试删除Who:,What:,When:,Where:以及文本文件中每行的前进空格。以下是一个例子:

Who: Tester1+Password
What: Authentication Success
When: Tues March 20, 2015 08:15:02 UTD
Where: 198.192.1.2

4 个答案:

答案 0 :(得分:2)

如果您要删除第一个:以外的任何内容,则可以执行以下操作:

sed -re 's/(^[^:]+: )(.*)/\2/' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2

正如格伦所说,我们可以通过删除我们不需要的部分来完全避免捕获组。

sed 's/[^:]\+: //' file

答案 1 :(得分:2)

使用cut排除第一个以空格分隔的字段:

cut -d " " -f 2- file

答案 2 :(得分:1)

将匹配的内容,地点,时间,人物置于捕获组中,然后使用冒号。然后用空字符串替换匹配的字符。如果要进行不区分大小写的匹配,请在最后添加i标志。

$ sed 's/^Wh\(ere\|en\|at\|o\):[[:blank:]]*//' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2

一般情况下,您可以使用

sed 's/^[^[:blank:]]\+[[:blank:]]\+//' file

答案 3 :(得分:1)

sed 's/^[^ ]* *//' YourFile

假设只有这4个单词是可能的并且作为你的样本