перебирая разные файлы списка, всегда получая саму Eline - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть три файла со списком файлов, которые мне нужно использовать позже, чтобы применить функцию.Мне удалось создать цикл, проходящий через 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 голосов
/ 04 декабря 2018

Вы можете использовать это в качестве тестового примера для написания программы в awk:
3 входных файлов, сохранять строки в массиве и печатать все в END-блоке.

В этом случае вы можетеиспользуйте другую программу, которая работает еще проще:

paste -d" " rw_sorted_test.txt fwd_sorted_test.txt run_list.txt
0 голосов
/ 03 декабря 2018

Быстрая попытка, если вам нужно:

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 ... <...), должны содержать как минимум то же количество строк, что и основной файл, управляющий циклом. </p>

Некоторая ссылка может быть найдена здесь: Как работают файловые дескрипторы?

или изучают дескрипторы файлов bash.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...