Использование 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, но я могу напечатать только новую строку после делиметра, я не знаю, как распечатать все это на следующей строке.

  • Разбор csv с sed и perl одним слоем?
  • Используйте sed для поиска и сохранения только строк с двумя альфа-символами в них
  • Как распечатать все, кроме Nth, до последней строки в sed?
  • Как я могу извлечь данные из этой строки?
  • Используйте AWK для разделения подстроки на последние n символов на новый столбец
  • Удалите строки на основе шаблона, но сохраняя первые n строк, которые соответствуют
  • извлекать блоки текста из XML-файла
  • импорт данных из текстового файла в сценарий bash
  • One Solution collect form web for “Использование AWK добавляет новую строку, если существует совпадение”

    sed:

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

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

    awk:

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

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

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