Как я нахожу и заменяю в file1 со значениями от file2

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
1
задан 29 July 2015 в 12:17

2 ответа

Это - задание для join:

join -t, -j1 -o 2.2,1.2,1.3 <(sort file1) <(sort file2)
  • -t указывает вход, и ouput разделитель
  • -j1 является объединяющим полем (в обоих файлах первый)
  • -o ... формат вывода, как желаемый в вопросе
3
ответ дан 3 December 2019 в 06:32

Это - что-то 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[] массив.

Примечание это может быть расширено для учета случаев, когда поля не присутствуют в массиве или значительно большем количестве вещей.

3
ответ дан 3 December 2019 в 06:32

Другие вопросы по тегам:

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