【发布时间】:2013-06-19 01:21:46
【问题描述】:
如何在 bash 中同步读取/处理 2 个文件?
我有 2 个文本文件,其中的行数/项目数相同。 一个文件是
a
b
c
另一个文件是
1
2
3
如何同步循环遍历这些文件,以使a 与1、b->2、c->3 相关联?
我以为我可以将文件作为数组读取,然后用索引处理它们,但我的语法/逻辑似乎不正确。
这样做f1=$(cat file1) 会生成f1 = a b c。我认为做f1=($(cat file1)) 会使其成为一个数组,但它会产生f1=a,因此没有数组供我处理。
如果有人想知道我搞砸的代码是什么:
hostnames=($(cat $host_file))
# trying to read in as an array, which apparently is incorrect
roles=($(cat $role_file))
for i in {0..3}
do
echo ${hostnames[$i]}
# wanted to iterate through each element in the file/array
# but there is only one object instead of N objects
echo ${roles[$i]}
done
【问题讨论】:
-
要使用文件的内容填充数组,我会将
$IFS设置为\n并使用命令array=($(<file)),然后使用命令for ((n=0;n<${#array[@]};n++));do echo "${array[n]}";done来处理数组(s )。
标签: regex bash awk sed pattern-matching