sed 对 hexa

问题描述 投票:0回答:2

我想用 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

但这没有任何作用。我不明白。有什么想法吗?

linux sed hex
2个回答
1
投票

sed 适用于以

\x0a
结尾的行,该字符不是它所作用的字符串的一部分。

Perl 来救援!

perl -i -pe 's/\x0a/\x25/' saut-de-ligne_UTF-8

1
投票

行分隔符不是

sed
操作的文本的一部分。因此,您无法更换它。

您可以使用

tr
进行翻译:

tr '\012' '\045' < saut-de-ligne_UTF-8 > tmp
mv tmp saut-de-ligne_UTF-8
© www.soinside.com 2019 - 2024. All rights reserved.