Как я могу написать в n-м столбце файла в awk? - PullRequest
1 голос
/ 13 сентября 2011

Например:

abc
xyz
123
546

input.txt:

asdad
asdad
adghf
dfytr

Я хотел добавить вышеуказанный столбец во 2-й столбец. Ожидаемый результат приведен ниже.

output.txt:

asdad  abc
asdad  xyz
adghf  123
dfytr  567

Ответы [ 4 ]

3 голосов
/ 13 сентября 2011

paste - самое простое решение.Вот пример awk, который не должен хранить весь первый файл в памяти:

awk '{getline second < "example"; printf("%s\t%s\n",$0,second)}' input.txt
3 голосов
/ 13 сентября 2011

Вы ищете команду paste, а не awk.Вы можете сделать в awk, но вы, вероятно, обнаружите, что paste проще:

pax> cat qq1
asdad
asdad
adghf
dfytr

pax> cat qq2
abc
xyz
123
546

pax> paste qq1 qq2
asdad   abc
asdad   xyz
adghf   123
dfytr   546

Используйте paste -d' ' qq1 qq2, если вам нужен пробел, а не табуляция дляразделитель.

0 голосов
/ 14 сентября 2011

В awk:

awk 'NR==FNR {x[NR] = $0} NR != FNR {print x[FNR], $0}' col1_file col2_file

Хотя, вероятно, лучше использовать пасту

0 голосов
/ 14 сентября 2011

Вы можете использовать только bash

exec 4<file2
while read -r line1
do
 read -r line2 <&4
 echo $line $line2
 done < file1
exec 4>&-
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...