2014-02-08 106 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的每一行上,將該行添加到帶有逗號的字符串中。最後打印時沒有最後一個逗號。

如果沒有匹配的行,它會失敗!