我有三个文件,列出了文件列表,以后需要使用这些文件来应用功能。 我设法创建了一个遍历3个不同文件的循环,但并没有我需要的输出。 我的输入: rw_sorted_test.txt
1
2
3
fwd_sorted_test.txt
A
B
C
run_list.txt
1st
2nd
3rd
我正在这样运行它:
for f in `cat rw_sorted_test.txt`; do for l in `cat fwd_sorted_test.txt`; do for r in `cat run_list.txt` do echo ${f} ${l} ${r}; done; done; done;
我现在得到的是这样的:
1 A 1st
1 A 2nd
1 A 3rd
2 A 1st
2 A 2nd
2 A 3rd
3 A 1st
(...)
我正在寻找的东西是这样的:
1 A 1st
2 B 2nd
3 C 3rd
我肯定这会很简单,但是我确实是初学者,所有解决方法都没有起作用。 另外,如何在回显所需的输出后使其运行? 谢谢
答案 0 :(得分:1)
快速尝试,如果需要的话:
exec 4< run_list.txt
exec 5< rw_sorted_test.txt
for a in $(cat fwd_sorted_test.txt); do
read run <&4
read sort <&5
echo "$sort $a $run"
done
...输出为:
1 1st A
2 2nd B
3 3rd C
文件也应该关闭:
exec 4<&-
exec 5<&-
重点是做一个循环,并一次从3个不同的文件中读取一行。打开供输入的文件(exec ... <...)应至少包含与控制循环的主文件相同的行数。
一些参考可以在这里找到:How do file descriptors work?
或对bash文件描述符进行一些研究。希望对您有所帮助。
答案 1 :(得分:1)
您可以将其用作在awk
中编写程序的测试用例:
3个输入文件,将行存储在数组中,并将所有内容打印在END块中。
在这种情况下,您可以使用更容易运行的另一个程序:
paste -d" " rw_sorted_test.txt fwd_sorted_test.txt run_list.txt