Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 替换“文字”\r\n“;在文本文件中_Bash_Sed - Fatal编程技术网

Bash 替换“文字”\r\n“;在文本文件中

Bash 替换“文字”\r\n“;在文本文件中,bash,sed,Bash,Sed,我正在尝试用替换文本文件中的每个\r\n 我尝试了以下方法,但没有成功: 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 使用perl一行程序比使用sed更容易操作行结尾。这是完全未经测试的,但应该是可行的(在我看来,唯一的问题是perl现在

我正在尝试用

替换文本文件中的每个
\r\n

我尝试了以下方法,但没有成功:

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

使用perl一行程序比使用
sed
更容易操作行结尾。这是完全未经测试的,但应该是可行的(在我看来,唯一的问题是perl现在是否可以进行通用换行处理,在这种情况下,您永远不会看到
\r
):

perl-e'unde$/;while(){s:\r\n:

:g;print;}'test.txt>xtest.txt

或同等地

perl -pe 'BEGIN { undef $/ } s:\r\n:<p/>:g' test.txt > xtest.txt
perl-pe'BEGIN{unde$/}s:\r\n:

:g'test.txt>xtest.txt

开始时的键是
unde$/
,这使得perl将整个
test.txt
读取为一个大的长字符串;明显的正则表达式就可以工作了。

cat文件| tr-d'\r'| sed's |$|

|g'| tr-d'\n
cat file | tr -d '\r' | sed 's|$|</p>|g' | tr -d '\n'

所有其他答案都假设您正在尝试处理Windows样式的行尾,并将其更改为段落标记

要将字符的文字序列
\r\n
更改为其他内容,只需使用全局替换:

sed 's!\\r\\n!<p/>!g' file
sed的\\r\\n

!g'锉刀


\
本身需要转义。

您是否尝试了
sed:a;N、 美元!文学士;s#\r\n#

#g'

?我不应该指定文件吗?呃,是的,我认为这很明显。文本是否包含文字字符
\r\n
,或者您这样写是为了告诉我们回车符和换行符在哪里?这是文件中的确切文本
tr-d'\r'
我已经从我的文件中添加了测试。。。当我运行这些时,
xtest.txt
仍然包含
\r\n
字符
cat file | tr -d '\r' | sed 's|$|</p>|g' | tr -d '\n'
sed 's!\\r\\n!<p/>!g' file