我有一个需要在Linux中编辑的大文件。
该文件的数据字段用双引号(“”)括起来。但是当我使用notepad ++打开文件时,我在双引号(ie. "filed1"SOH"field2"SOHSOH"field3"SOH"field4")
当我在vim中打开相同的文件时,我会看到双引号后跟^ A字符。 (ie. "filed1"^A"field2"^A^A"field3"^A"field4")
然后当我在命令行中执行此命令时
cat filename.txt | od -c | more
我看到该字符显示为001(即“filed1”001“field2”001001“field3”001“field4”)
我通过vim尝试了以下内容
:s%/\\001//g
我也试过这个命令
sed -e s/\001//g filename.text > filename_new.txt
sed -e s/\\001//g filename.text > filename_new.txt
我需要从该文件中删除这些字符。 我怎么能这样做?
答案 0 :(得分:1)
使用echo -e在sed命令中获取文字\ 001字符:
$ sed -i -e $(echo -e 's/\001//g') file.txt
( - 我是一个GNU sed扩展,用于请求就地编辑。)
答案 1 :(得分:0)
您使用\001
逃避SOH角色的尝试很接近。
GNU sed有一个扩展名,用\d001
指定一个十进制值(还有八进制和十六进制变量):
$ sed -i -e 's/\d001//g' file.txt
在Vim中,正则表达式原子看起来略有不同:\%d001
;或者,您可以通过 Ctrl + V 然后:%s
直接在001
命令行中输入字符; CP。 :help i_CTRL-V_digit
。