обратная ссылка sed

У меня есть следующие строки, сохраненные в текстовом файле tel2:

Hernandez Darin, Alberto|plaza mayor|13190|Corral de Calatrava|926/448/829
Gomez Badenas, Josefina|calle Sagasta|13190|Corral de Calatrava|926.443.602

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

sed 's/\(.*13...|[^|]*\)\(.*\)$/\2\1/' tel2.txt

Я получил только первую группу как вывод, игнорируя вторую полученную группу. Но если я поместил \n между \2 и \1, он производит вторую группу сначала и первое в новой строке, таким образом, это не regex. Первая группа перезаписывает второе?, я пропускаю что-то?

Заранее спасибо!

1
задан 20 September 2017 в 02:52

1 ответ

На основе комментариев проблема - то, что Ваш файл имеет окончания строки DOS-style CRLF, и Ваша вторая группа получения получает CR и перемещает его в середину выходного шаблона, поскольку Вы видите использование cat -et для создания окончаний строки явными:

$ sed 's/\(.*13...|[^|]*\)\(.*\)$/\2\1/' tel2.txt | cat -et
|926/448/829^MHernandez Darin, Alberto|plaza mayor|13190|Corral de Calatrava$
|926.443.602^MGomez Badenas, Josefina|calle Sagasta|13190|Corral de Calatrava$

возможное решение А состояло бы в том, чтобы исключить CR из второй группы:

$ sed 's/\(.*13...|[^|]*\)\(.*\)\r$/\2\1\r/' tel2.txt | cat -et
|926/448/829Hernandez Darin, Alberto|plaza mayor|13190|Corral de Calatrava^M$
|926.443.602Gomez Badenas, Josefina|calle Sagasta|13190|Corral de Calatrava^M$

(если Вы не хотите окончания стиля DOS в результате, опустите \r в замене).

<час>

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

sed 's/\(.*\)|\([^|]*\)\r/\2|\1\r/'

напр.:

$ sed 's/\(.*\)|\([^|]*\)\r/\2|\1\r/' tel2.txt | cat -et
926/448/829|Hernandez Darin, Alberto|plaza mayor|13190|Corral de Calatrava^M$
926.443.602|Gomez Badenas, Josefina|calle Sagasta|13190|Corral de Calatrava^M$
1
ответ дан 7 December 2019 в 15:29

Другие вопросы по тегам:

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