Использование AWK добавляет новую строку, если существует совпадение

У меня есть файл со следующим форматом:

aaa@ bbb bbb@ ccc& ddddd@ aaaf ccc@ ddd& eee: abcd& dassda 

Выход должен быть:

 aaaa@ bbb bbb@ ccc& ddddd@ aaaf ccc@ ddd& eee@ abcd& dassda 

Как я смогу добиться этого с помощью AWK? Я пробовал sed и awk, но я могу напечатать только новую строку после делиметра, я не знаю, как распечатать все это на следующей строке.

One Solution collect form web for “Использование AWK добавляет новую строку, если существует совпадение”

sed:

 sed 's/& /\&\n/' file 

если вам нужно заменить all & на каждую строку, просто добавьте g после последнего / .

awk:

 awk '{ sub(/& /,"&\n"); print }' 

в случае необходимости заменить все & на каждой строке используйте gsub вместо sub .

  • Переименование файлов с номерами в соответствующие 1-n числа в порядке
  • разбиение файла на основе значений в определенном столбце
  • Есть ли способ использовать апострофы в командах sed?
  • Как перечислить только последнюю строку каждого каталога?
  • Скрипт сопоставляет буквенный шаблон по нескольким строкам?
  • Я хочу сконденсировать список диапазонов (от-до)
  • Как удалить все после определенного шаблона или строки в файле?
  • Рекурсивный поиск / замена, учет глубины каталога
  • Как я могу передать $ 1 в sed?
  • Предварительная обработка текста. Как запустить сразу несколько скриптов
  • Удаление файлов, если содержимое не соответствует шаблону
  • Linux и Unix - лучшая ОС в мире.