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

Пожалуйста помоги…

Я имею в качестве входных файлов

file1

Red + Yellow = Orange; Yellow + Blue = Green; Blue + Red = Violet 

file2

 Red;1 Yellow;2 Blue;3 

Я делаю это в unix.

Вывод

file3

 1 + 2 = Orange; 2 + 3 = Green; 3 + 1 = Violet 

2 Solutions collect form web for “Обработка текста: замена строк в строке соответствующими строками”

 #!/bin/bash IFS=";" while read NAME VALUE do sed -i "s/${NAME}/${VALUE}/g" file1 done < file2 
 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 idiom NR! = FNR, чтобы определить, является ли это первым или вторым. Если это первый файл, разделите строку на ; и сохраните отображение в массиве изменений. Если это второй, то цикл над полем ввода, если какое-либо совпадение затем заменить на правильное изменение. В конце напечатайте результат.

  • Быстрый доступ к часто используемому документу
  • Как искать между 2-м и 3-м разделителями
  • Как сделать фестиваль неуклонно выражать свои собственные выражения схемы из командной строки, чтобы изменить голоса по мере необходимости?
  • Как вводить текст в новый текстовый файл с помощью nano из командной строки?
  • Дублирование индексов в массиве
  • Как извлечь версию db из oratab
  • Создание диаграмм в ASCII
  • cat файлы каталогов, которые перенесли имя файла в строку текста и удалили строку заголовка?
  • Копирование содержимого буфера обмена в файл автоматически и непрерывно?
  • обработка текста
  • Глядя на бревна снизу вверх
  • Linux и Unix - лучшая ОС в мире.