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

Dea*_*ano 3 mysql bash perl awk

我希望有人可以帮助我,

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

for i in `cat file.csv`
do
echo $i 
done
Run Code Online (Sandbox Code Playgroud)

我在这里想要实现的是从file.csv获取一个数字列表以生成一个mysql批量删除语句.

delete FROM Recordtable WHERE DataID IN ('93041', '93031' ...etc);
Run Code Online (Sandbox Code Playgroud)

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

非常感谢您的帮助

Ada*_*iss 5

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

for i in ($<file.csv)
do
  echo -n "$i "
done
Run Code Online (Sandbox Code Playgroud)

抑制换行符的-n选项echo.


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

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

awk '{ printf $0 " " } NR%1000 == 0 { print "" }' file
Run Code Online (Sandbox Code Playgroud)

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


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

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

sed命令搜索任何字符(.*)并将其替换为open-paren,它找到的字符(即整行)和close-paren.