13

C# モジュールで、Tectia を使用して Windows から Unix にファイルを転送したいと考えています。しかし問題は、これらのファイルが転送され (Ascii または Binary モードの両方)、VI エディターを使用して開くと、^M 文字が表示されることです。これについて検索しましたが、解決策は、ユーティリティを使用してファイルを転送した後にこれらの ^M 文字を削除することです。これらの ^M 文字がそもそも表示されない方法はありますか。これらのファイルを送信する前に、コードで回避策を講じるオプションはありますか?

4

10 に答える 10

22

viエディターでそれを削除する方法:

  • その後、 +:%s/を押し てからctrl+Vを押します。これにより、ctrlM^M
  • 次に//g (次のようになります:) を:%s/^M押すEnterと、すべてが削除されます。

幸運を!

于 2014-03-24T22:13:28.577 に答える
14

dos2unixをインストールして使用できます。インストール後、実行するだけです:

>dos2unix yourfile.txt 
于 2012-09-20T07:45:51.687 に答える
14

文字を削除する必要がある場合^M(文字を に置き換えないでください\n):

sed -i -e 's/\r//g' yourfile.txt

それらを次のように置き換えたい場合\n:

sed -i -e 's/\r/\n/g' yourfile.txt
于 2016-08-19T15:34:17.037 に答える
5

vi エディターでCtrl+を削除するためのもう 1 つのトリック:M

:%s/^V^M//g

+文字を削除するためのその他のトリックについてCtrlM

于 2013-03-10T09:31:08.857 に答える
3

ターミナルで次のコマンドを実行してみてください(最初にインストールする必要がある場合があります)。

fromdos <your-file>
于 2012-09-20T10:29:04.007 に答える
1
:%s/^V^M//
  1. gまったく必要ありません。

  2. %s- 置き換えたいテキストを見つけて置き換える

  3. ^V^M何も置き換えたくない場合は空のままにしてください

于 2013-10-26T10:30:56.510 に答える
1

みんな助けてくれてありがとう。回避策を使用してこの問題を解決しました。Windows では CR+LF (\r\n) を行末として使用し、Unix では LF (\n) を行末として使用します。Windows ファイルを取得し、CR+LF(\r\n )ユーティリティなしでコード自体にLF(\ n)を使用します。これにより、ファイルはUnixシステムと互換性があり、SFTPを使用してファイルを転送し、^ M文字なしでUnixで動作しました。

于 2012-09-28T06:23:30.883 に答える