我有几行,并希望将该行分组为5,然后将其内爆以进行MySQL IN ()查询.
直到这个我已经做到了
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf " " }
Run Code Online (Sandbox Code Playgroud)
例如,我想在下面这些行
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
成为
1,2,3,4,5
6
Run Code Online (Sandbox Code Playgroud)
如果我用这个
awk '{ printf "%s", $0; if (NR % 5 == 0) print ""; else printf "," }
Run Code Online (Sandbox Code Playgroud)
,如果所有行都不能被5整除,那么输出将在尾随行中
UPDATE
以前的标题是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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)