bash - 使用 bash 读取两个文件的嵌套循环
问题描述
我目前正在尝试使用以下代码合并两个输入文件:
for i in `cat $file1`; do
for j in `cat $file2`; do
printf "%s %s\n" "$i" "$j"
done
done
给定文件创建如下:
printf '%s\n' A B C >file1
printf '%s\n' 1 2 3 >file2
...我的预期/期望输出是:
A 1
B 2
C 3
但相反,我得到的输出是:
A 1
A 2
A 3
B 1
B 2
B 3
C 1
C 2
C 3
如何解决这个问题?
解决方案
可以使用 coreutils 的 pr 命令,也可以使用其他命令/工具,如 paste 以及 Shell 和 AWK 脚本。使用 coreutils 中的命令最省力,因为命令行上只需要几个参数,如下例所示:
pr -TmJS" " file1 file2
在哪里:
-T
关闭分页-mJ
合并文件,加入整行-S" "
用空格分隔列