我正在尝试使用\r\n
替换文本文件中的每个<p/>
。
我试过以下但没有运气:
sed 's#\r\n#<p/>#g' test.txt
sed 's#\r\n#<p/>#g' test.txt
sed 's#/\r/\n#<p/>#g' test.txt
sed ':a;N;$!ba;s/\r\n/<p/>/g' test.txt
以下是text.txt
https://www.pivotaltracker.com/story/\r\nhttps://www.pivotaltracker.com/story\r\n\r\nSome business text.\r\n\r\nSome business text. Task 123 is still a work in progress but we wanted it in develop to keep everything updated.
答案 0 :(得分:4)
所有其他答案都假设您正在尝试处理Windows样式的行结尾并将其更改为段落标记。
要将字符序列\r\n
更改为其他内容,只需使用全局替换:
sed 's!\\r\\n!<p/>!g' file
\
本身需要转义。
答案 1 :(得分:1)
使用perl单行比使用sed
更容易操作行结尾。这是完全未经测试的,但是应该工作(在我看来,唯一的问题是perl是否可以在最近进行通用换行处理,在这种情况下你永远不会看到\r
):< / p>
perl -e 'undef $/; while (<>) { s:\r\n:<p/>:g; print; }' test.txt > xtest.txt
或等效
perl -pe 'BEGIN { undef $/ } s:\r\n:<p/>:g' test.txt > xtest.txt
密钥在开头是undef $/
,这使得perl将整个test.txt
读作一个大的长字符串;显而易见的正则表达式然后Just Works。
答案 2 :(得分:1)
cat file | tr -d '\r' | sed 's|$|</p>|g' | tr -d '\n'