Unix(AIX)とWindowsの間でファイルを転送できません。 UnixにWindowsフォルダをマウントするには、次のマウントコマンドを使用しました。
mount -v cifs -n /admin/@dmin -o file_mode=775,dir_mode=775,uid=0,gid=0 /TEST/Finance
Windowsコンピュータでは、このインストールディレクトリで処理するためにこれらのファイルを選択します。 IBM Connect:Direct を使用してファイルを転送します。
問題は、UnixのWindowsマウントからWindowsサーバーにファイルを移動するときに、ファイルにCR(キャリッジリターン)がなく、LF(改行)しかないということです。つまり、メモ帳でファイルを開くと、すべてのテキストを1行で表示できます。
UnixからWindowsにファイルを転送するときにCRとLFを保存する方法は?
私のマウントコマンドに問題がありますか?
答え1
私の考えでは、インストールとは関係がないかもしれません。 CR文字が元のファイルに存在していましたか? AIXについて実際に確認していないが存在しないと仮定すると、unix2dos
それを使用して追加できます。次のようにsedを使用できます。
sed -i -e 's/\n/\r\n/g' <file>
使用できるものがない場合unix2dos
。この-i
フラグは sed にファイルをその場で変更するよう指示します。通常、結果を標準出力として印刷します。-e
sedに何かをするように指示するフラグはいくらでも持つことができます。この例では、操作を使用してs
値を置き換えます。/
代替コマンドの区切り文字として使用されます。最初の部分\n
は私たちが探しているパターンで、2番目の部分\r\n
は私たちが変えたいパターンです。最後は、g
sedに各行の最初の位置だけでなく、表示されているすべての場所で一致するように指示します(行の終わりを一致させるときは重要ではないかもしれません)。
答え2
パーティションがどのようにマウントされるかは問題ではありません。すべてのファイルのすべてのバイトが転送されます。転送後にファイルにキャリッジリターンがない場合は、以前はキャリッジリターンがありませんでした。ファイルのエンコーディングを確認するためにAIXでどのコマンドを実行する必要があるのかわかりませんが、バイナリ・エディタでその行がLFまたはCRLFで終わるかどうかを確認できます。
UNIXからWindowsにテキストファイルをコピーして改行をCRLFに変換したい場合は、ftp
ASCIIモードで使用できます。シリアル接続も改行変換ができると思います。私は転送中にテキストを変換しようとしている他のプロトコルを知りません。もちろんいくつかあるかもしれません。
転送の前後にすべてのファイルを変換したり、UNIX改行文字を理解するWindowsエディタを使用することもできます。