Существует множество способов содрать шкуру с кошки. Предположим, что соединение между обоими файлами находится в строке №. Попробуйте, например. этот, который paste
объединяет строки вместе, а затем сдвигает завершающее слово в поле, содержащее AAA
, используя регулярное выражение ""обратные ссылки":
paste sample_log replacement-text | sed -r 's/AAA ([^[:space:]]*[[:space:]]*)(.*$)/\2 \1/'
apple 111 rose
banana 222 tulip
orange 333 marigold
или этот, который заставляет awk
считывать замены в массив, а затем заменяет второе поле соответствующим элементом массива:
awk 'NR==FNR {T[NR] = $0; next } {$2 = T[FNR]} 1' replacement-text sample_log
apple 111 rose
banana 222 tulip
orange 333 marigold
#!/bin/bash
paste logfile.txt replacement.txt | while IFS= read -r line; do
echo $line | sed "s/`echo $line | awk '{print $2}'`/`echo $line | awk '{print $4}'`/g" | awk '{print $1 " " $2 " " $3 " "}'
done