我从脚本命令的输出中获得了大量用户名。它们一个接一个地列出,我想在一行中一次打印5个
我的输入是
eli
mo
joes
hope
tom
bob
smith
etc
etc
oinky
我希望输出看起来像这样
eli, mo, joes, hope, tom
bob, smith, etc, etc, oinky
你能帮帮忙吗?
干杯
答案 0 :(得分:2)
使用awk:
awk '{if (NR%5 != 0) {printf $1", "} else {printf $1"\n"}}' file
更加笨拙的方式,感谢@JS웃
awk 'NR%5{printf "%s, ",$0;next}1' file
或者来自@Jotne的这个,我觉得很好:
awk '{printf "%s"(NR%5?", ":"\n"),$1}' file
所以:
每5行,打印文件的第一列($ 1,如果你想要所有列,则为$ 0)并创建新行,否则写第一列和逗号。
(文件是您输入的文件)
它给出了:
eli, mo, joes, hope, tom
bob, smith, etc, etc, oinky
希望这会有所帮助
答案 1 :(得分:2)
your_command | paste - - - - - | sed 's/\t/, /g'
答案 2 :(得分:2)
$ cat f
eli
mo
joes
hope
tom
bob
smith
etc
etc
oinky
最简单的方法
$ awk 'ORS = !(NR%5)? RS : OFS' OFS=',' f
eli,mo,joes,hope,tom
bob,smith,etc ,etc ,oinky
或强>
$ awk '{$1 = $1} ORS = !(NR%5)? RS : OFS' OFS=', ' f
eli, mo, joes, hope, tom
bob, smith, etc, etc, oinky
答案 3 :(得分:1)
xargs -n 5 < yourfile | tr ' ' ','
答案 4 :(得分:1)
假设您的命令是 cat fileName.txt ,它会为您提供以下输出:
eli
mo
joes
hope
tom
bob
smith
etc
etc
oinky
所以请使用 xargs 命令,如下所示
cat fileName.txt | xargs -n 5 | sed -e's / /,/ g'
eli,mo,joes,hope,tom 鲍勃,史密斯等等,oinky
获得所需的输出
答案 5 :(得分:1)
以下是我使用awk
awk '{printf "%s"(NR%5?", ":"\n"),$1}' file
eli, mo, joes, hope, tom
bob, smith, etc, etc, oinky