$ awk 'FNR == NR { a[$2] = $1; next }
{ print
line = (a[$1] ? a[$1] : "Ø")
for (i = 2; i <= NF; ++i) {
line = line OFS (a[$i] ? a[$i] : "Ø")
}
printf("%s\n", line)
}' input2 input1
A B C D
v c c c
A B C
v c c
A B C D E F
v c c c v Ø
То есть, если мы читаем из первого файла (input2
), заполните справочную таблицу символами, на которые следует заменить каждый символ.
При чтении второго файла(input1
)выведите входную строку, затем выполните цикл по полям и создайте строку с правильными символами из таблицы поиска. Если символ отсутствует в таблице поиска, вставьте Ø
.
Затем выведите собранную строку с завершающим символом новой строки.
Вы также можете превратить его в правильный скрипт:
#!/usr/bin/awk -f
FNR == NR { a[$2] = $1; next }
{ print
line = (a[$1] ? a[$1] : "Ø")
for (i = 2; i <= NF; ++i) {
line = line OFS (a[$i] ? a[$i] : "Ø")
}
printf("%s\n", line)
}
Затем сделайте его исполняемым(chmod +x script
)и запустите так:
$./script input2 input1
A B C D
v c c c
A B C
v c c
A B C D E F
v c c c v Ø