Нераспознанный параметр g++ не является частью команды

Если вы пытаетесь использовать значения в r.txtкак ключи для извлечения совпадающих многострочных -записей из s.txt, попробуйте

awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= s.txt
  • процесс r.txtс разделителем записей по умолчанию (новой строки ), построение ассоциативного массива uс ключами из второго поля, разделенного пробелами -; затем
  • сброс разделителя записей RS=для переключения в режим абзаца для второго файла
  • обработка s.txtв режиме абзаца, т.е. обработка каждой пустой -строки -разделенного блока как единой записи, последнее значение поля которой $NFможет затем использоваться в качестве значения поиска вu
  • если $NFсуществует в u, вывести всю запись

Чтобы добавить пробел между совпавшими записями:

Если у вас есть GNU awk (gawk), вы можете использовать специальную переменную RT, чтобы вернуть исходные разделители абзацев:

gawk 'NR==FNR {u[$2]++; next} $NF in u {print $0 RT}' r.txt RS= s.txt

В более общем смысле,вы можете добавить одну дополнительную новую строку после каждой совпадающей записи:

awk 'NR==FNR {u[$2]++; next} $NF in u {print $0 "\n"}' r.txt RS= s.txt

или добавьте дополнительную новую строку к стандартному разделителю полей вывода :

awk 'NR==FNR {u[$2]++; next} $NF in u' r.txt RS= ORS='\n\n' s.txt
1
02.06.2021, 11:32
0 ответов

Теги

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