例如,如果我使用grep制作了一个文件,它会给我一个下一个结果:
16 Jan 07:18:42 (name1), xx.210.49.xx),
16 Jan 07:19:14 (name2), xx.210.xx.24),
16 Jan 07:19:17 (name3), xx.140.xxx.79),
16 Jan 07:19:44 (name4), xx.210.49.xx),
16 Jan 07:19:56 (name5), xx.140.xxx.79),
,然后如何sed awk或grep删除除日期名称和IP之外的所有内容,如下所示:
16 Jan 07:18:42 name1 xx.210.49.xx
16 Jan 07:19:14 name2 xx.210.xx.24
16 Jan 07:19:17 name3 xx.140.xxx.79
16 Jan 07:19:44 name4 xx.210.49.xx
16 Jan 07:19:56 name5 xx.140.xxx.79
我的grep命令如下所示:
grep 'double' $DAEMON | awk -F" " '{print $2" "$1" "$3" "$8" "$10}' > $DBLOG
THX。
答案 0 :(得分:3)
如果您只想删除某些字符,可能需要使用tr
选项查看-d
命令:
$ echo "16 Jan 07:18:42 (name1), xx.210.49.xx)," | tr -d "(),*'[]"
16 Jan 07:18:42 name1 xx.210.49.xx
答案 1 :(得分:1)
只需一个awk命令即可完成。无需使用grep
awk '/double/{gsub("[(),]","",$8); gsub("[(),]","",$10);print $2" "$1" "$3" "$8" "$10}'
或只是
awk '/double/{gsub("[(),]","");print $2" "$1" "$3" "$8" "$10}'
如果您还需要删除[],请使用此模式:gsub("[][(),]","")
答案 2 :(得分:1)
打破ghostdog74的回答:
awk '
/double/ {
gsub(/[(),\[\]]/, "")
print $2" "$1" "$3" "$8" "$10
}
'
/double/
告诉awk
仅对{ }
中包含double
(/double/
是正则表达式)的行执行内容。
gsub
期望第一个参数是正则表达式,第二个参数是替换字符串,第三个参数是替换正在执行的变量。如果未指定第三个参数(如本例所示),则默认为$0
,与整行匹配。
我将\[
和\]
添加到正则表达式中,除了[
,]
之外,还应该匹配(
和)
个字符,
。
一般情况下,当您发现自己合并awk
,sed
或grep
时,几乎总有一种方法可以只用sed
或{{{{{{ 1}}。
答案 3 :(得分:1)
使用sed
$> cat ./text | sed -r -e 's/(\(|\)\,)//g'
16 Jan 07:18:42 name1 xx.210.49.xx
16 Jan 07:19:14 name2 xx.210.xx.24
16 Jan 07:19:17 name3 xx.140.xxx.79
16 Jan 07:19:44 name4 xx.210.49.xx
16 Jan 07:19:56 name5 xx.140.xxx.79
Inb4 UselesUseOfCat:cat ./text
此处类似于OP的grep
输出。
答案 4 :(得分:1)
[jaypal@MBP-13~/temp] cat file1
16 Jan 07:18:42 (name1), xx.210.49.xx),
16 Jan 07:19:14 (name2), xx.210.xx.24),
16 Jan 07:19:17 (name3), xx.140.xxx.79),
16 Jan 07:19:44 (name4), xx.210.49.xx),
16 Jan 07:19:56 (name5), xx.140.xxx.79),
[jaypal@MBP-13~/temp] sed 's/\(.*[^(]\)(\(.*\)),\(.*\)),/\1\2\3/g' file1
16 Jan 07:18:42 name1 xx.210.49.xx
16 Jan 07:19:14 name2 xx.210.xx.24
16 Jan 07:19:17 name3 xx.140.xxx.79
16 Jan 07:19:44 name4 xx.210.49.xx
16 Jan 07:19:56 name5 xx.140.xxx.79