我想在一个文件中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
希望有人可以帮助我。感谢。
答案 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
的每一行上,使用添加的逗号将该行附加到字符串。最后打印没有最后一个逗号。
如果没有匹配的行,它将会失败!