shell 当一个文件被保存在Windows的Kedit中时,unix2dos命令不会做什么?

ewm0tg9j  于 2023-05-29  发布在  Shell
关注(0)|答案(2)|浏览(146)

我有个奇怪的问题我写了一个重新格式化数据文件的脚本。我基本上是用正确的列顺序、间距等创建新文件。然后我unix 2dos这些文件(我正在格式化这些文件的程序是windows的DIPS,我假设这些文件应该是ansi)。当我去打开文件的DIPS程序,但发生错误,文件不会打开。
当我通过DIPS程序创建相同类型的数据文件并在记事本中打开它时,它与我用脚本创建的数据文件完全匹配。
另一方面,如果我首先在Kedit中打开我用脚本创建的数据文件,保存它们,然后在DIPS程序中打开它们,一切都正常。
我的问题是,在Kedit中保存什么可能是unix 2dos所不能做的?
(Also如果我尝试使用记事本或写字板保存而不是Kedit,则文件无法在DIPS中打开)
下面是在UNIX中使用diff命令创建的内容
“1,16c1,16

  • 此文件由Windows版Dips生成。

  • 以下两行是此文件的标题。
    巴拿马眼镜蛇
    钻孔B11106-GT
    遍历次数:0

  • 全球定位是:

倾角/倾角方向
0.000000(赤纬)
无数量
额外列数为:0

  • 此文件由Windows版Dips生成。

  • 以下两行是此文件的标题。
    巴拿马眼镜蛇
    钻孔B11106-GT
    遍历次数:0

  • 全球定位是:

倾角/倾角方向
0.000000(赤纬)
无数量
额外列数为:0
18c18

440c440

442c442

-1

-1

任何帮助将不胜感激!谢谢!

fxnxkyjh

fxnxkyjh1#

好吧!我知道了。
简单地说,当你unix2dos你的文件,你不带任何空格字符之间的最后一个字母在一行和换行符。在Kedit中保存时,您确实会删除行中最后一个字母与换行符之间的空格。
在我的脚本中,我有一个糟糕的编程实践,我写了一个字符串,像这样;
echo "This is an example string">> outfile.txt
字符数为32,如果您可以看到换行符(chr(10)),则该行的内容为;
这是一个示例字符串<chr(10)>
如果你使用unix2dosoutfile.txt,该行看起来和上面的一样,只是有一个不同的换行符。但是当你将文件放入Kedit并保存它时,现在字符数是25,该行看起来像这样;
这是一个示例字符串<chr(10)>
这是因为Kedit在行尾不保留空格。它将回车符或换行符放置在一行中的最后一个字母或“非空格”字符处。
因此,读取文字输入的程序,如DIPS(我猜)或更广泛使用的AutoCAD脚本,将有一个真正的问题,在返回字符前的额外空格。基本上,在AutoCAD脚本中,行中的空格被视为返回字符。因此,如果你在一行的末尾有十个额外的空格,它会被视为十个回车,而不是你可能想要的那个回车。

hrirmatl

hrirmatl2#

unix2dos将每行末尾的line-break字符从unix换行符(10)转换为dos换行符(13,10)
Kedit可能会更改文件的encoding(如从ansi到UTF-8)
您可以使用iconv实用程序(在Linux机器上)更改文件的编码。

相关问题