Используемая вами команда:
paste file1 file2 | cut -f3,5 | awk '{printf "%-20s %s \n", $1, $0}'
Однако здесь есть кое-что интересное.
- Команда
paste
записывает строки, состоящие из последовательно соответствующих строк из каждого файла, разделенных TAB , в стандартный вывод.
- Команда
cut
имеет TAB в качестве разделителя по умолчанию для ввода и вывода.
Итак, в конце все, что нужно сделать, это сказать awk использовать TAB в качестве разделителя, вместо его значения по умолчанию любой формы пробела :
paste file1 file2 | cut -f3,5 | awk -F'\t' '{printf "%-20s %s \n", $1, $2}'
но на самом деле, мы можем положить разрез вместе с awk
paste file1 file2 | awk -F'\t' '{printf "%-20s %s \n", $3, $5}'
Примечание: мы, возможно, даже можем объединить file1
и file2
в командной строке awk
. paste
в awk
будет выглядеть так:
awk 'BEGIN{OFS="\t"}(NR==FNR){a[NR]=$0;next}{print a[NR], $0}' file1 file2
Таким образом, строка while может быть записана как:
awk 'BEGIN{FS=OFS="\t"}
(NR==FNR){a[NR]=$0;next}
{$0=a[NR] OFS $0}
{ printf "%-20s %s \n", $3, $5 }' file1 file2