Обработка текста: Замена строк в строке соответствующими строками

Итак, jasonwryan в основном прокомментировал ответ, который я искал здесь. Патч применяется к ядру Linux, которое можно скомпилировать и использовать для любого дистрибутива. Он связал меня с парой замечательных статей, в том числе с тем же руководством Arch Linux по ядрам .

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

1
20.04.2019, 18:39
2 ответа
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, чтобы определить, первый это файл или второй. Если это первый файл, разделите строку на ; и сохраните отображение в массиве изменений. Если это второй, то переберите поле ввода, если есть совпадения, замените правильным изменением. В конце выведите результат.

1
27.01.2020, 23:34
#!/bin/bash

IFS=";"
while read NAME VALUE
do
    sed -i "s/${NAME}/${VALUE}/g" file1
done < file2
1
27.01.2020, 23:34

Теги

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