ссылка sed назад

UbuntuOne для мобильных устройств поддерживает синхронизацию контактов. Также есть возможность синхронизировать контакты с Thunderbird. Надеюсь, это поможет.

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

3 ответа

Исходя из комментариев, проблема заключается в том, что ваш файл имеет конец строки CRLF в стиле DOS, а вторая группа захвата захватывает 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-стиля

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

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
ответ дан 22 May 2018 в 18:18

Исходя из комментариев, проблема заключается в том, что ваш файл имеет конец строки CRLF в стиле DOS, а вторая группа захвата захватывает 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-стиля [d6]

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

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
ответ дан 18 July 2018 в 06:33

Исходя из комментариев, проблема заключается в том, что ваш файл имеет конец строки CRLF в стиле DOS, а вторая группа захвата захватывает 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-стиля [d6]

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

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
ответ дан 24 July 2018 в 18:37

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

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