-1

以逗号分隔的 .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 转换后,文件不应包含任何隐藏字符。

4

1 回答 1

1

正如@Oguz Ismail所说,从数据dos2unix中删除CR;您所说的“隐藏字符”是通常所说的“空格”(通常通过按下键盘底部的大条来制作)。

您可以使用 GNU sed 实现您想要的:

sed 's/[[:space:]]*$//g' -i *.csv
  • [[:space:]]: 空格字符:在“C”语言环境中,这是制表符、换行符、垂直制表符、换页符、回车符和空格。[参考]
  • -i:指定要就地编辑文件。[参考]

您没有 GNU sed:

for filename in *.csv
do
  sed 's/[[:space:]]*$//g' "$filename" > "${filename}.out"
  mv -f "${filename}.out" "${filename}"
done
于 2019-08-28T10:13:04.050 回答