Создание текстового файла из других текстовых файлов

У меня есть текстовый файл, подобный этому

word_1 root_of_word_A word_2 root_of_word_B word_3 root_of_word_C word_4 root_of_word_A 

И другой документ, подобный этому

 root_of_word_A root_of_word_1 root_of_word_B root_of_word_2 root_of_word_C root_of_word_3 

Я должен заменить в первом документе другими словами второго документа, как это

 word_1 root_of_word_1 word_2 root_of_word_2 word_3 root_of_word_3 word_4 root_of_word_1 

Я думал, что могу сделать что-то подобное с awk. Я попробовал это:

 awk 'NR==FNR {print $1}{c[$2]++;next};c[$1]>0{print $2}' file1 file2 

Проблема в том, что я не знаю, как напечатать первый столбец файла1 и второй файл2.

Упомяните, что первый файл и второй имеют разное количество строк и что есть только пример, чтобы сделать его более ясным, что я хочу сделать (проблема заключается не в том, чтобы преобразовать A в 1, это в целом root_of_the_word).

  • Слияние двух файлов с разницей
  • Преобразование вывода диска в читаемую HTML-почту
  • Передача параметров PAM в UFW
  • Разделить видеофайл на части с помощью ffmpeg
  • Переместить файл, но только если он закрыт
  • Как запросить ввод от пользователя из переменной или массива bash?
  • Строки из двух разных массивов не совпадают?
  • Как переименовать файлы с помощью sed?
  • 2 Solutions collect form web for “Создание текстового файла из других текстовых файлов”

    Если слова в file2 уникальны, вы можете отменить порядок файлов, построить массив из file2 и применить его к file1 :

     $ awk 'NR==FNR{a[$1]=$2;next}{print $1,a[$2]}' file2 file1 word_1 root_of_word_1 word_2 root_of_word_2 word_3 root_of_word_3 word_4 root_of_word_1 

    Вы выполняете операцию реляционного соединения. Для этого есть стандартная команда Unix: join . Я хочу, чтобы больше людей знали об этом замечательном инструменте!

    Команда join объединяет два файла в общем поле. Однако два файла должны быть отсортированы в этом поле.

    Общее поле – это поле 2 первого файла ( file1.txt ) и поле 1 второго файла ( file2.txt ). Сортировка файлов в этих полях:

     $ sort -k2,2 -o file1.txt file1.txt $ sort -k1,1 -o file2.txt file2.txt 

    Затем выполните соединение в этих полях (прочитайте руководство для join ), указав, что мы хотим, чтобы в первом поле было поле 1 из первого файла и поле 2 из второго файла, и отсортировать результат (если необходимо):

     $ join -1 2 -2 1 -o 1.1,2.2 file1.txt file2.txt | sort word_1 root_of_word_1 word_2 root_of_word_2 word_3 root_of_word_3 word_4 root_of_word_1 
    Interesting Posts

    Версия Magic в Linux?

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

    Как восстановить пользовательские postgres?

    Недопустимое разрешение на кеш-память пустого сервера Linux

    Виртуализация OS X для разработки программного обеспечения

    Случайный названный файл в домашнем каталоге, возможно, взломан?

    Как редактировать загрузочные параметры установщика Debian?

    Linux не смонтирует устройство Android в режиме USB MSC

    рекурсивный поиск шаблона, затем для каждого матча распечатывают конкретный номер строки SEQUENCE: номер файла и отсутствие содержимого файла

    Поиск файла для строки, окруженной двумя другими известными строками?

    Как использовать bindfs для создания общей папки между окружением chroot и ее хостом

    Как запустить Compiz автоматически?

    Как использовать один nic для трафика хранения и другого для сетевого трафика в Linux (Slackware)?

    использование здесь сценария переадресация ввода / вывода с помощью команды su

    объединить несколько строк данных, имеющих одно общее поле

    Linux и Unix - лучшая ОС в мире.