https://stackoverflow.com/questions/5800035/how-to-replace-nul-in-vi
https://blog.csdn.net/a14206149/article/details/52595092
http://vim.1045645.n5.nabble.com/search-for-null-td1194026.html
可替换以下的特殊字符
# cat asciiReplaceScript.sh
#!bin/sh
# 特殊字符查看表 # https://blog.csdn.net/xfg0218/article/details/80901752
echo "参数说明" echo -e "\t 第一个参数是带有特殊字符的文件,第二个参数是需要生成新文件的名字" echo -e "\t 例如: sh asciiReplaceScript.sh bandConversionFile.log postConversionFile.log" echo
# 对输入参数进行校验 if [ ! -n "$1" ];then echo -e "\t 请输入第一个参数...." exit elif [ ! -n "$2" ];then echo -e "\t 请输入第二个参数...." exit elif [ -f $2 ];then echo -e "\t"$2"文件已被占用,请更换输出文件命!" exit fi
echo -e "\t 转换开始......"
starttime=`date +'%Y-%m-%d %H:%M:%S'`
# 特殊字符的集合,28是特殊字符的10进制代码 fs=`echo 28 | awk '{printf("%c", $1)}'` doc1=`echo 17 | awk '{printf("%c", $1)}'` doc2=`echo 18 | awk '{printf("%c", $1)}'` sub=`echo 26 | awk '{printf("%c", $1)}'` nul=`echo 0 | awk '{printf("%c", $1)}'` rs=`echo 30 | awk '{printf("%c", $1)}'` gs=`echo 29 | awk '{printf("%c", $1)}'` etb=`echo 23 | awk '{printf("%c", $1)}'`
# 替换开始 sed -e 's/[\x0]//g' -e 's/'$fs'//g' -e 's/'$doc1'//g' -e 's/'$doc2'//g' -e 's/'$sub'//g' -e 's/'$nul'//g' -e 's/'$rs'//g' -e 's/'$gs'//g' -e 's/'$etb'//g' $1 >> $2
echo -e "\t 转换结束......"
endtime=`date +'%Y-%m-%d %H:%M:%S'` start_seconds=$(date --date="$starttime" +%s); end_seconds=$(date --date="$endtime" +%s);
echo -e "\t 脚本耗时:"$((end_seconds-start_seconds))"s"
# 退出脚本 exit