Итак, jasonwryan в основном прокомментировал ответ, который я искал здесь. Патч применяется к ядру Linux, которое можно скомпилировать и использовать для любого дистрибутива. Он связал меня с парой замечательных статей, в том числе с тем же руководством Arch Linux по ядрам .
Когда я задал этот вопрос, у меня не было достаточно знаний о ядре, чтобы понять, как применяется этот патч, но спасибо ему за то, что он направил меня на правильный путь.
awk 'NR == FNR { # First file
split($0,a,/;/)
#print "change " a[1] "to " a[2]
change[a[1]]=a[2]
}
NR != FNR {
for (i=1;i<NF;i++) {
if ($i in change) {
$i=change[$i]
}
}
print
}' file2 file1
Используйте идиому awk NR! = FNR, чтобы определить, первый это файл или второй. Если это первый файл, разделите строку на ;
и сохраните отображение в массиве изменений. Если это второй, то переберите поле ввода, если есть совпадения, замените правильным изменением. В конце выведите результат.
#!/bin/bash
IFS=";"
while read NAME VALUE
do
sed -i "s/${NAME}/${VALUE}/g" file1
done < file2