sed
从文件中删除空字节的意图是什么?我尝试着:
s/\000//g
但这就是去除零的字符串。
s/\x00//g
似乎没有效果。我正在尝试在sed
脚本中执行此操作,因此我不确定该echo
技巧是否有效。
sed
从文件中删除空字节的意图是什么?我尝试着:
s/\000//g
但这就是去除零的字符串。
s/\x00//g
似乎没有效果。我正在尝试在sed
脚本中执行此操作,因此我不确定该echo
技巧是否有效。
Answers:
我不知道您如何使用来实现此目标sed
,但这是可以使用的解决方案tr
:
tr < file-with-nulls -d '\000' > file-without-nulls
这是一种sed
在某些情况下但并非在所有情况下都适用的解决方案:
sed 's/\x0//g' file1 > file2
此解决方案涉及将空格字符替换为在所有情况下均适用的空格:
sed 's/\x0/ /g' file1 > file2
-i
用于将文件转换到位的参数。
使用Perl执行正则表达式非常容易。只需替换sed
为perl -np -e
:
$ printf 'one\0two\0' | perl -np -e 's/\0/\n/g'
one
two
使用该-n
选项,正则表达式会像sed一样逐行运行。
如果要使用零字节作为记录分隔符,请使用Perl的-0
选项。
$ printf 'one\0two\0' | perl -np0 -e 's/^/prefix /; s/\0/\n/g'
prefix one
prefix two
$ printf 'one\0two\0' | perl -np -e 's/^/prefix /; s/\0/\n/g'
prefix one
two
您可以通过运行查找Perl的命令行选项perldoc perlrun
。
为了匹配一个空字节,我将此正则表达式与Cygwin的SED结合使用:
[^ \ x01- \ x7F]