遍历不同的列表文件,始终检索sam Eline

时间:2018-12-03 13:38:40

标签: list loops unix echo

我有三个文件,列出了文件列表,以后需要使用这些文件来应用功能。 我设法创建了一个遍历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

我肯定这会很简单,但是我确实是初学者,所有解决方法都没有起作用。 另外,如何在回显所需的输出后使其运行? 谢谢

2 个答案:

答案 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