присоединение к 2 файлам на 2 столбцах, но в различных номерах столбцов с помощью awk

Если вы хотите читать со стандартного входа дважды, вам нужно как-то его буферизировать (скорее всего, во временном файле). Первый cat можно заменить вызовом tee, который также записывает данные в файл, который можно перечитать вторым вызовом cat (в этом нет необходимости; sed может читаться непосредственно из файла).

tee > input_buffer  # Copy standard input to a file and standard output
echo Content length is $CONTENT_LENGTH
sed -e 's/&/\n/g' input_buffer | cut -d = -f2 
0
06.03.2019, 18:22
2 ответа

Попробуйте:

$ awk -F, -v OFS=, 'NR==FNR{a[$1,$2]=1; next} ($1,$8) in a {print $1,$8,$2,$3,$4,$5,$6,$7}' file1 file2

который дает:

111,123abc,hhh,eeee,rere,,23,2014,123abc
222,234bcd,jjkj,7878,uhjj,1,45,2013,234bcd

Это не совсем то же самое, что и ваш вывод, так как у вас есть 8 столбцов в первом и 9 во втором. Я предположил, что это опечатка :-)

.
2
28.01.2020, 02:28

Если файлы отсортированы по полю соединения (поле #1), как показано в Вашем примере, то Вы можете использовать команду join

join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2
1
28.01.2020, 02:28

Теги

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