从linux文件中删除^ @字符

时间:2014-01-23 15:57:40

标签: linux unix unicode sed utf-16

我有一个文件,每个字符后面都有可见^@个字符(蓝色)。我只能在vi file.txt中看到这些字符。我无法使用cat查看这些字符。我该如何删除它们?

我尝试使用以下命令:

sed "s/[^@]//g" a.txt > b.txt 

然而,这似乎没有改变文件。

4 个答案:

答案 0 :(得分:2)

尝试iconv -f UTF16 -t UTF8 <your-file> > <new-file>

答案 1 :(得分:1)

dos2unix file.txt file.txt。这样做..

答案 2 :(得分:0)

这有效:

sed "s/[\^@]//g" a.txt > b.txt 

答案 3 :(得分:0)

我以这种方式删除目录中所有带有不适当符号的文件:

for i in *.*;do 
  
  case "$i" in 
   
  *[\(\)\!\*\%\^\ ]*) 
    mv "$i" ${i//[^a-zA-Z0-9.]/_}
  ;;
  esac
   
done

[()!*%^ \] -表示从()!*%^和空格中消除任何符号 [^ a-zA-Z0-9。]-代表非英语的小写和大写字符,数字和点

重要的是,它仅重命名包含“坏”字符的文件。