在Kedit中为unix2dos命令执行的Windows保存文件时会发生什么变化?

时间:2012-03-26 17:56:18

标签: bash shell file-format

所以我有一个奇怪的问题。我编写了一个重新格式化数据文件的脚本。我基本上使用正确的列顺序,间距等创建新文件。然后我unix2dos这些文件(我正在格式化这些文件的程序是Windows的DIPS,我假设文件应该是ansi)。当我打开DIPS程序中的文件时,会发生错误,文件将无法打开。

当我通过DIPS程序创建相同类型的数据文件并在记事本中打开它时,它与我用脚本创建的数据文件完全匹配。

另一方面,如果我首先在Kedit中打开我用脚本创建的数据文件,保存它们,然后在DIPS程序中打开它们一切正常。

我的问题是,Kedit可以节省哪些东西,unix2dos可能没有?

(如果我尝试使用记事本或字垫保存而不是Kedit,则文件无法在DIPS中打开)

以下是使用unix

中的diff命令创建的内容

” 1,16c1,16
 *此文件由Dips for Windows生成  *以下2行是此档案的标题  Cobre Panama
 钻孔B11106-GT

遍历数量:0

  • 全球定位是:
    DIP / DIPDIRECTION

    0.000000(赤字)

    无数量

    额外列数为:0

-
 *此文件由Dips for Windows生成  *以下2行是此档案的标题  Cobre Panama
 钻孔B11106-GT

遍历数量:0

  • 全球定位是:
    DIP / DIPDIRECTION

    0.000000(赤字)

    无数量

    额外列数为:0

18c18

-

440c440

-

442c442

-1

-1

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

2 个答案:

答案 0 :(得分:1)

好!想出来了。

只需在unix2dos文件中删除行中最后一个字母和换行符之间的任何空格字符。在Kedit中保存时,您会删除行中最后一个字母和换行符之间的空格。

在我的剧本中,我编写了一个糟糕的编程习惯,我正在写这样的字符串;

echo“这是一个示例字符串”>> outfile.txt

字符数为32,如果你能看到断行字符(chr(10)),那么该行就会读取;

这是一个示例字符串

如果unix2dos outfile.txt,该行看起来与上面相同,但具有不同的断行符。但是,当您将文件放入Kedit并保存时,现在字符数为25,并且该行看起来像这样;

这是一个示例字符串

这是因为Kedit不会在行尾保留空格。它将返回或换行符放在最后一个字母或“非空格”字符中。

因此,读取像DIPS(我猜测)或更广泛使用的AutoCAD脚本的文字输入的程序将在返回字符之前存在额外空格的实际问题。基本上在AutoCAD脚本中,行中的空格被视为返回字符。因此,如果你在一行的末尾有十个额外的空格,它将被视为十个返回,而不是你想要的那个。

OH,如果这对你有帮助,或者虽然它很好,请给我一个投票!

答案 1 :(得分:0)

unix2dos转换每行末尾的line-break字符,从unix换行符(10)转换为dos换行符(13,10)

Kedit可以更改文件的encoding(例如从ansi更改为UTF-8)

您可以使用iconv实用程序(在Linux机器上)

更改文件的编码