AWK或SED在使用grep时从每一行删除模式

时间:2014-08-18 18:35:41

标签: unix awk sed

我有grep 2列,假设col1和col2。在col2中,我想删除每行中出现的模式。如何为此目的使用awk / sed?

假设ps -eaf | grep b会产生以下输出:

col1 col2       col3
1    a/b/rac     123
2    a/b/rac1    456
3    a/b/rac3    789

我希望输出存储在这样的文件中:

1 rac
2 rac1
3 rac3

2 个答案:

答案 0 :(得分:3)

含糊地说,这可能会做你想要的:

$ awk 'sub(/.*b\//,"",$2){print $1, $2}' file 
1 rac
2 rac1
3 rac3

假设文件包含:

col1 col2       col3
1    a/b/rac     123
2    a/b/rac1    456
3    a/b/rac3    789

答案 1 :(得分:0)

您需要将输出传递给

| awk '{sub(/^.*\//, "", $2); print $1, $2}'

awk程序中的第一个命令将第二个字段的内容更改为仅包含最终/字符后面的内容,这似乎是您想要的。第二个命令打印前两个字段。