我需要在Linux中编辑一个大文件。该文件的数据字段用双引号(“”)括起来。但当我使用记事本++打开该文件时,我看到双引号(ie. "filed1"SOH"field2"SOHSOH"field3"SOH"field4")
之间有SOH字符
当我在vim中打开同一个文件时,我看到双引号后面跟着^A字符。(ie. "filed1"^A"field2"^A^A"field3"^A"field4")
然后当我在命令行中执行此命令时
cat filename.txt | od -c | more
我看到字符显示为001(即“文件1“001“字段2“001001“字段3“001“字段4”)
我已经通过vim尝试了以下方法
:s%/\\001//g
我也试过这个命令
sed -e s/\001//g filename.text > filename_new.txt
sed -e s/\\001//g filename.text > filename_new.txt
我需要从文件中删除这些字符。我该怎么做?
3条答案
按热度按时间wwodge7n1#
您尝试使用
\001
转义SOH字符的次数非常接近。GNU sed有一个扩展,可以用
\d001
指定十进制值(也有八进制和十六进制变体):在Vim中,正则表达式原子看起来略有不同:
\%d001
;或者,您可以直接在:%s
命令行中通过Ctrl + V输入字符,然后输入001
;例如:help i_CTRL-V_digit
。irtuqstp2#
使用echo -e将文字\001字符添加到sed命令中:
(-i是请求就地编辑的GNU sed扩展。)
wh6knrhe3#
只需使用
awk
使其保持简单,而不必为报价格式问题而烦恼: