C# モジュールで、Tectia を使用して Windows から Unix にファイルを転送したいと考えています。しかし問題は、これらのファイルが転送され (Ascii または Binary モードの両方)、VI エディターを使用して開くと、^M 文字が表示されることです。これについて検索しましたが、解決策は、ユーティリティを使用してファイルを転送した後にこれらの ^M 文字を削除することです。これらの ^M 文字がそもそも表示されない方法はありますか。これらのファイルを送信する前に、コードで回避策を講じるオプションはありますか?
質問する
71495 次
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 に答える
3
ターミナルで次のコマンドを実行してみてください(最初にインストールする必要がある場合があります)。
fromdos <your-file>
于 2012-09-20T10:29:04.007 に答える
1
:%s/^V^M//
g
まったく必要ありません。%s
- 置き換えたいテキストを見つけて置き換える^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 に答える