как добавить вывод как новый столбец с именами файлов

Один из вариантов - использовать значение IFS с раскрытием переменной:

$ echo Hello! > file.txt

$ IFS=:
$ a=cat:file.txt
$ $a
Hello!
1
04.06.2017, 01:47
1 ответ

paste— хороший выбор, если нам просто нужно объединить строки файлов.

Чтобы добавить строку headerс именами файлов, используйте комбинациюawk+paste:

{ for f in file*; do awk '{ for(i=1;i<=NF;i++) printf("%s\t",FILENAME); exit }' "$f"; done; 
echo ""; paste -d"\t" file*; } | column -t

Вывод (для 3 входных файлов):

file1  file1  file2  file2  file3  file3
a      1      a      10     a      0
b      2      b      20     b      0
c      3      c      40     c      0

Детали:

  • { команда; команда; ...}- используется для объединения выходных данных нескольких команд

  • для f в файле*;- для каждого файла

  • printf("%s\t",FILENAME)- печать имя файла для каждого столбца соответствующего файла

  • exit- выход сразу после обработки 1-й строки

1
27.01.2020, 23:45

Теги

Похожие вопросы