У меня есть два файла:
file 1
Name Height
Jay 180
Kathy 171
Amy 163
Bill 176
Hellen 157
file 2
Name Height
Jay 195
Amy 173
Hellen 161
, и я хочу заменить значение во втором столбце файла 1, если имена (столбец 1) совпадают в файле 2. Если имена не совпадают,затем остаются без изменений.Результат должен быть таким:
Name Height
Jay 195
Kathy 171
Amy 173
Bill 176
Hellen 161
Только высота Джея, Эми и Хеллен изменилась, потому что их имя существует в файле 2.
Я пытался решить это с for loop plus awk или join, но не очень хорошо.В конце я использовал Excel для генерации команды LONG awk из файла 2 и применил ионный файл 1, он работал:
awk '{OFS="\t";
if($1~/^Jay$/){$2="195"; print $0;}
else if($1~/^Amy$/){$2="173"; print $0;}
else if($1~/^Hellen$/){$2="161"; print $0;}
}' file 1
Таким образом я попытался использовать цикл for для генерации:
else if($1~/^ Amy $/){$2=" 173 ";print $0;}
Над ним находится команда part1 & name & command part2 & height для замены & command part3.Но трудно поместить эти команды в переменную, потому что она содержит специальные символы, такие как: if, ~, /, $
Мне интересно, есть ли какой-нибудь более простой способ сделать это только командой?Спасибо!
Чарли