Я немного читал о awk
. Это оказалось чрезвычайно полезным для одиночных данных. Предположим, у меня есть два входных файла:
## inp1
x y
1 3
2 4
6 9
...
## inp2
x z
1 5
2 19
6 9
Я хочу вывести что-то, что «объединяет» оба файла. Что-то вроде:
## output
x y z
1 3 5
2 4 19
6 9 9
Я могу придумать такие идеи, как чередование этих двух файлов, например: https://stackoverflow.com/questions/4011814/how-to-interleave-lines-from-two-text-files и что-то делать с awk.
Или, может быть, что-то с использованием ассоциативных массивов? Однако я не слишком уверен, что является причиной этого вопроса;).
Я использую Linux.
Использованиеawk
:
awk 'FNR==NR{a[FNR]=$2;next}{print $1,a[FNR],$2}' f1 f2
awk 'NR==FNR{a[$1];a[FNR]=$2;next}($1 in a) {print $1,a[FNR],$2}' f1 f2
Выход
x y z
1 3 5
2 4 19
6 9 9