我有几行,想将这些行分成 5 行,然后将其内爆以用于 MySQL IN ()
查询。
我一直坚持到现在
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf " " }
例如,我想要下面这几行
1
2
3
4
5
6
成为
1,2,3,4,5
6
如果我用这个
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf "," }
如果所有行都不能被 5 整除,那么输出的末尾将有 ,
更新
以前的标题是 awk 而不是 bash,但事实证明有比 awk 更简单的解决方案。我的目标是做这样的事情
$seq 12 | pr -7ats, | xargs -I X echo "SELECT * FROM Table IN (X)" #or execute mysql
SELECT * FROM Table WHERE id IN (1,2,3,4,5,6,7)
SELECT * FROM Table WHERE id IN (8,9,10,11,12)
最佳答案
pr
就是这个工具
$ seq 6 | pr -5ats,
1,2,3,4,5
6
$ seq 18 | pr -5ats,
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18
关于bash - 组合行时相当于 PHP 内爆的终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297297/