Unix:使用 sed 删除每行的一部分
Unix: Using sed remove part of each line
我正在尝试从文本文件的每一行中删除 Who: ,What: ,When: ,Where: 和程序 space 。下面是一个例子:
Who: Tester1+Password
What: Authentication Success
When: Tues March 20, 2015 08:15:02 UTD
Where: 198.192.1.2
将匹配 What, where, when , who 的模式放在捕获组中,后跟一个冒号。然后用空字符串替换匹配的字符。如果要进行不区分大小写的匹配,请在最后添加 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
如果您想删除第一个 :
之前的任何内容,那么您可以这样做:
sed -re 's/(^[^:]+: )(.*)//' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2
正如 Glenn 所建议的,我们可以通过删除不需要的部分来完全避免捕获组。
sed 's/[^:]\+: //' file
使用cut
排除第一个space分隔的字段:
cut -d " " -f 2- file
sed 's/^[^ ]* *//' YourFile
假设只有这 4 个词是可能的并且作为您的样本
我正在尝试从文本文件的每一行中删除 Who: ,What: ,When: ,Where: 和程序 space 。下面是一个例子:
Who: Tester1+Password
What: Authentication Success
When: Tues March 20, 2015 08:15:02 UTD
Where: 198.192.1.2
将匹配 What, where, when , who 的模式放在捕获组中,后跟一个冒号。然后用空字符串替换匹配的字符。如果要进行不区分大小写的匹配,请在最后添加 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
如果您想删除第一个 :
之前的任何内容,那么您可以这样做:
sed -re 's/(^[^:]+: )(.*)//' file
Tester1+Password
Authentication Success
Tues March 20, 2015 08:15:02 UTD
198.192.1.2
正如 Glenn 所建议的,我们可以通过删除不需要的部分来完全避免捕获组。
sed 's/[^:]\+: //' file
使用cut
排除第一个space分隔的字段:
cut -d " " -f 2- file
sed 's/^[^ ]* *//' YourFile
假设只有这 4 个词是可能的并且作为您的样本