我想在文件中grep一个字符串,并将所有结果合并到一行中,命令分开。
grep 1000/tmp/userfile
grep的输出,有时输出是2个衬里或更多。
用户12:X:1000:用户12,用户100,用户我想要实现的是删除 user12:x:1000:user12、user13:x:1000:user13 和 user14:200,用户300,用户400,用户500 用户13:X:1000:用户13,用户600,用户700,用户800,用户900,用户1000 用户14:X:1000:用户14,用户2600,用户2700,用户2800,用户2900,用户21000
x:1000:user14,然后将每个人与如下所示的命令分开。
用户100,用户200,用户300,用户400,用户500,用户600,用户700,用户800,用户900,用户1000,用户2600,用户2700,用户2800,用户2900,用户21000
希望有人能帮我解决这个问题。谢谢。
grep 1000 /tmp/userfile | cut -d, -f2- | tr 'n' ',' | sed 's/,$//'
或者(实际上更好),正如 devnull 所建议的那样:
grep 1000 /tmp/userfile | cut -d, -f2- | paste -sd,
awk '/1000/ {string+=$0 ","} end {print substr(string,1,length(string)}' INPUTFILE
可能会做到。
在具有匹配1000
的每一行上,将该行追加到字符串中,并添加逗号。最后打印没有最后一个逗号。
如果没有匹配的行,它将失败!