mysql - bash 如何将 for 循环输出打印成一行?

标签 mysql perl bash awk

我希望有人能帮我解决这个问题,

如何将 for 循环的输出打印成单行?

for i in `cat file.csv`
do
echo $i 
done

我在这里试图实现的是从 file.csv 中获取数字列表以生成 mysql 批量删除语句。

delete FROM Recordtable WHERE DataID IN ('93041', '93031' ...etc);

这里的目标是将每 1000 条记录加载到一个删除语句中

非常感谢您的帮助

最佳答案

如果你想要循环,你可以使用

for i in ($<file.csv)
do
  echo -n "$i "
done

-n echo 的选项禁止换行。


您可以使用 echo $(<file.csv) 在一行中打印整个 文件.

但这可能更适合您的需求:

awk '{ printf $0 " " } NR%1000 == 0 { print "" }' file

这将打印每行后跟一个空格。只要行号可以被 1000 整除,它就会打印一个换行符;也就是说,在每第 1000 行之后。


补充:要打印括号内的每一行,您可以使用

awk '{ printf $0 " " } NR%1000 == 0 { print "" }' file | sed 's/.*/(&)/'

sed命令搜索任何字符 ( .* ) 并将它们替换为左括号、找到的字符(即整行)和右括号。

关于mysql - bash 如何将 for 循环输出打印成一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9490573/

相关文章:

php - 从数据库表中查找第一个可用标识符

mysql - 我应该索引外键吗?我应该使用该表的主键吗?

php - 如何在codeigniter中将来自3个不同输入字段的数据一起插入到mysql数据库的表的一列中

perl - 草莓 perl 和 pp 文件扩展名

bash - 如何在 git safe.directory 上递归添加目录?

linux - bash + linux机器中的进度对话框栏

mysql - 脚本/工作流程插入不存在并自动递增

perl - 这样的代码的目的是什么?

Perl - 如果需要很长时间,在按键时中断系统/反引号命令

linux - 如何在 linux 中用另一行替换行