如何组合grep命令的结果

时间:2014-02-08 12:28:04

标签: bash shell sed awk grep

我想在一个文件中grep一个字符串,并将所有结果合并到命令分隔的一行中。

  

grep 1000 / tmp / userfile

grep的输出,有时输出为2衬里或更多。

  

USER12:X:1000:USER12,user100,user200,user300,user400,user500   user13:X:1000:user13,user600,user700,user800,user900,user1000   user14:X:1000:user14,user2600,user2700,user2800,user2900,user21000

我想要实现的是删除user12:x:1000:user12,user13:x:1000:user13和user14:x:1000:user14然后将所有人与命令分开,如下所示。

  

user100,user200,user300,user400,user500,user600,user700,user800,user900,user1000,user2600,user2700,user2800,user2900,user21000

希望有人可以帮助我。感谢。

2 个答案:

答案 0 :(得分:2)

grep 1000 /tmp/userfile | cut -d, -f2- | tr '\n' ',' | sed 's/,$//'

或者(事实上,更好),正如devnull所暗示的那样:

grep 1000 /tmp/userfile | cut -d, -f2- | paste -sd,

答案 1 :(得分:0)

awk '/1000/ {string+=$0 ","} end {print substr(string,1,length(string)}' INPUTFILE

可能会这样做。

在匹配1000的每一行上,使用添加的逗号将该行附加到字符串。最后打印没有最后一个逗号。

如果没有匹配的行,它将会失败!