Как выполнить команду с помощью Ctrl + D (EOF)

$ 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 Ø
0
11.12.2019, 10:42
0 ответов

Теги

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