Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从dos2unix转换时添加的隐藏字符_Bash_Shell_Unix_Dos2unix - Fatal编程技术网

Bash 从dos2unix转换时添加的隐藏字符

Bash 从dos2unix转换时添加的隐藏字符,bash,shell,unix,dos2unix,Bash,Shell,Unix,Dos2unix,以逗号分隔的.csv格式输入文件: 25 Mbps^M 25 Mbps^M 25 Mbps^M 0 Mbps ^M 0 Mbps ^M 0 Mbps ^M 0 Mbps ^M ash Back  ^M ash Back  ^M ash Back  ^M 从dos2unix转换时, ^M之前的空格将转换为隐藏字符 需要去掉空格,以便从dos2unix转换时不存在隐藏字符 尝试使用sed、tr,但没有任何效果 for filename in *.csv do echo "C

以逗号分隔的.csv格式输入文件:

25 Mbps^M
25 Mbps^M
25 Mbps^M
0 Mbps ^M
0 Mbps ^M
0 Mbps ^M
0 Mbps ^M
ash Back  ^M
ash Back  ^M
ash Back  ^M
从dos2unix转换时, ^M之前的空格将转换为隐藏字符

需要去掉空格,以便从dos2unix转换时不存在隐藏字符

尝试使用sed、tr,但没有任何效果

for filename in *.csv
    do
        echo "Converting $filename to UNIX format!!!!!\n \n"

        tr -d '\r' $filename > test_2
        #Converting file into Unix format and moving to input dir
        cp test_2 $filename
        dos2unix $filename > /input/$filename
    done
从dos2unix转换后,文件不应包含任何隐藏字符。

如上所述,从数据中删除;你所说的“隐藏字符”就是通常所说的“空格”(通常通过按下键盘底部的大条来实现)

您可以通过GNU sed实现您想要的:

sed的//[:space:]*$//g'-i*.csv
  • [[:space:]
    :空格字符:在“C”区域设置中,这是制表符、换行符、垂直制表符、换行符、回车符和空格。[]
  • -i
    :指定要在位编辑的文件。[]
您没有使用GNU:

for filename in *.csv
do
  sed 's/[[:space:]]*$//g' "$filename" > "${filename}.out"
  mv -f "${filename}.out" "${filename}"
done

dos2unix
删除
\r
s。隐藏字符是什么意思?您是否使用二进制查看器(如
bvi
od
)检查了这些字符?我很好奇您到底为什么要删除空格。如果值实际上是空格分隔的,那么空格将引入空列,这对于以后的解析可能很重要。如果没有,则空格与大多数文本处理工具无关。此处没有逗号,因此这确实不能是CSV格式。你能展示一个十六进制转储你得到什么(只是一两行)和你想得到什么?