file1
O,tested test,12345
OC,test explore,34567
file2
O,new order
OC,new quote
Мне нужен вывод как ниже:
New order,tested test,12345
New quote,test explore,34567
Это - задание для join
:
join -t, -j1 -o 2.2,1.2,1.3 <(sort file1) <(sort file2)
-t
указывает вход, и ouput разделитель -j1
является объединяющим полем (в обоих файлах первый) -o ...
формат вывода, как желаемый в вопросе Это - что-то awk
дескрипторы очень хорошо путем чтения одного файла в памяти и затем замены объектов в другом:
$ awk -F, -v OFS="," 'FNR==NR {a[$1]=$2; next} {$1=a[$1]}1' f2 f1
new order,tested test,12345
new quote,test explore,34567
идея состоит в том, чтобы сохранить значения от file2 в массиве values[file1]=file2
. Затем при чтении file1 мы заменяем 1-е поле отображением в эти values[]
массив.
Примечание это может быть расширено для учета случаев, когда поля не присутствуют в массиве или значительно большем количестве вещей.