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

У меня есть файл с разделителями табуляции, как показано ниже.Первый столбец представляет список имен файлов без расширения .txt, которые я хочу передать в качестве списка аргументов другой команде awk.

File1   abcd    xyz 234 pqr
File2   abcd    xyz 234 pqr
File3   abcd    xyz 234 pqr
File4   abcd    xyz 234 pqr

например. Предположим, это моя команда awk, яхотите передать аргументы как

awk -F"\t" '---Commamd-----' File1.txt File2.txt File3.txt File4.txt >> Final.txt

, чтобы каждая строка из 1-го столбца с расширением ".txt" входила и создавала Final.txt выходной файл.Следует отметить, что число столбцов может меняться каждый раз.

Я думал о создании его в скрипте bash, но я не могу предоставить правильные аргументы и добавить следующую строку из 1-го столбца в качестве следующего аргумента.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Исходя из моего понимания ваших требований, вы хотите использовать разделенный табуляцией файл, чтобы получить имена файлов в столбце 1, и вы хотите добавить расширение .txt к ним и передать его в другой файл.Сначала используйте mapfile, чтобы получить имена из файла, разделенного табуляцией

mapfile -t fileNames < <(awk -v FS="\t" '{print $1}' tabfile)

Теперь, чтобы передать это как список аргументов в другую функцию, все, что вам нужно сделать, это использовать этот массив в кавычках с суффиксом .txt расширение к нему

awk ... "${fileNames[@]/%/.txt}"
0 голосов
/ 18 мая 2018

Вы можете попробовать это awk

awk '{file=$1".txt";while (getline<file == 1)print $2}' infile

append .txt на все $ 1 файла, чтобы получить имя файла, например File2.txt
, распечатать 2 $ этого файла, если он существует.

0 голосов
/ 18 мая 2018

Не совсем уверен здесь, так как это не ясно.На основании вашего заявления о том, что вы хотите получить имена файлов от 1 awk и передать их другому awk, можно попробовать следующее.

awk '{print $0}' <(awk 'NF{print $1".txt"}' Input_file)

Так что, несмотря на print $0, вы можете выполнять свои операцииздесь я просто распечатал его, чтобы увидеть, подходят ли имена файлов правильно или нет.Также добавьте -F="\t" во 2-й awk, если ваш Input_file имеет разделитель табуляции и может изменить $1 на любое другое поле, если имена файлов не указаны в первом столбце.

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