2014-02-08 113 views
0

我想在文件中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
grep 1000 /tmp/userfile | cut -d, -f2- | tr '\n' ',' | sed 's/,$//' 

或者(事实上,更好的),作为devnull提示:

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

+1,但你可以替换'tr'\ n'','| sed的/,$ //''用'paste -sd',' – devnull

+0

甜贴!不知道。从现在起添加到我的命令行工具中!谢谢,devnull:)很明显,我刚刚尝试过它,它的作用就像魅力。 –

+0

这是完美的,我需要什么。非常感谢Alex和devnull – user2750672

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

可以办得到。

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

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