Если вы хотите читать со стандартного входа дважды, вам нужно как-то его буферизировать (скорее всего, во временном файле). Первый 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
Попробуйте:
$ 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 во втором. Я предположил, что это опечатка :-)
.Если файлы отсортированы по полю соединения (поле #1), как показано в Вашем примере, то Вы можете использовать команду join
join -t, -o 1.1,1.2,2.3,2.4,2.5,2.6,2.7,2.8 file1 file2