我想用 sed 替换单字节文件上的换行符
-(mar. déc. 05 11:45:16)--(moddgsa001.a2297:/home/marc/avirer)-
[root] # ls -l
total 4
-rw-r--r--. 1 root root 1 5 déc. 11:45 saut-de-ligne_UTF-8
-(mar. déc. 05 11:53:52)--(moddgsa001.a2297:/home/marc/avirer)-
[root] # od -h saut-de-ligne_UTF-8
0000000 000a
0000001
-(mar. déc. 05 11:53:57)--(moddgsa001.a2297:/home/marc/avirer)-
[root] # sed -i 's/\x0a/\x25/g' saut-de-ligne_UTF-8
-(mar. déc. 05 11:54:06)--(moddgsa001.a2297:/home/marc/avirer)-
[root] # od -h saut-de-ligne_UTF-8
0000000 000a
0000001
但这没有任何作用。我不明白。有什么想法吗?
sed 适用于以
\x0a
结尾的行,该字符不是它所作用的字符串的一部分。
Perl 来救援!
perl -i -pe 's/\x0a/\x25/' saut-de-ligne_UTF-8
行分隔符不是
sed
操作的文本的一部分。因此,您无法更换它。
您可以使用
tr
进行翻译:
tr '\012' '\045' < saut-de-ligne_UTF-8 > tmp
mv tmp saut-de-ligne_UTF-8