Как я могу продублировать строку и найти и заменить дубликат с помощью sed?

Если цель состоит в том, чтобы создать перекрестное произведение слов в aсо словами в b, вы можете использовать joinследующим образом:

$ join -1 2 -2 2 a b
 1 a
 1 b
 1 c
 1 d
 1 e
 2 a
 2 b
 2 c
 2 d
 2 e
 3 a
 3 b
 3 c
 3 d
 3 e
 4 a
 4 b
 4 c
 4 d
 4 e
 5 a
 5 b
 5 c
 5 d
 5 e
 6 a
 6 b
 6 c
 6 d
 6 e
 7 a
 7 b
 7 c
 7 d
 7 e
 8 a
 8 b
 8 c
 8 d
 8 e
 9 a
 9 b
 9 c
 9 d
 9 e

Объединение файлов в несуществующем -поле создаст все возможные комбинации строк в двух файлах. Обратите внимание, что это вставляет пробел в начале каждой строки.

3
02.11.2021, 12:40
2 ответа
$ awk '1; gsub(/é/,"e")' file
éva
eva
test
frédéric
frederic

Вышеупомянутое использование:

  1. Идиоматическое истинное условие 1, заставляющее awk выполнять действие по умолчанию для печати текущей строки, затем:
  2. gsub()заменить любые éна e, и если это нашло/заменило какие-либо é, то положительный возврат, используемый в контексте условия, снова заставляет awk выполнять действие по умолчанию для печати текущего (теперь изменена строка ).

Обратите внимание, что использование кода возврата из gsub(), чтобы сообщить нам, были ли найдены какие-либо é, избавляет нас от избыточного указания одного и того же регулярного выражения /é/дважды в команде.

11
02.11.2021, 12:58

Еще один вариант, похожий на @Stephen Kitt:

$ sed '/é/p;s/é/e/g'
éva
eva
test
frédéric
frederic

  • /é/pвыберите строки с символом éи напечатайте.
  • s/é/e/gвывести предыдущие строки с заменой.
5
02.11.2021, 13:07

Теги

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