bash - 组合行时相当于 PHP 内爆的终端命令

标签 bash awk terminal

我有几行,想将这些行分成 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/

相关文章:

linux - 用于隔离文件中单词的 Bash 脚本

linux - 在Linux伪终端中执行从一个终端发送到另一个终端的字符串

bash - 如何将参数传递给带空格的 docker run

algorithm - 在awk中计算CRC

bash - 如何在 Bash 脚本中运行 AWK?

php - Ubuntu 20 终端 PHP 脚本输出

c - Bash 脚本通过更改参数执行 C 应用程序

Linux:使用另一个环境变量的一部分设置环境变量

bash - 命令在命令行中工作,但在 bash 脚本中给出 'no such file or directory'

linux - 在行字符串中找到最大数并显示两列 - linux