• ベストアンサー

^M削除方法、教えてください。

PCからワークステーションにftpしてファイルをもってくると行末に「^M」がついてしまいます。これをつかなくする方法、もしくは一括置換する方法ご存知の方教えてください。よろしくお願いいたします。 出来れば理屈も教えていただければと思います。 PC:WinXP、EWS:Solalis7です。

質問者が選んだベストアンサー

  • ベストアンサー
  • osyo3
  • ベストアンサー率56% (35/62)
回答No.3

皆さんの回答で問題が解決したかと存じますが、一括置換する方法として、ソフトウェアを入れずに vi を利用してedの置換を利用する方法と sed を利用して置換する方法があります。 ftpしたファイル名を "hoge.txt" と仮定して以下に記述します。 vi法 1. host% vi hoge.txt 2. :%s @^v^m@@ (ハットはcontrolキーを押したままv,mと連続で押してください。エコーバックでは ^M に見えます) sed法 1. host% sed -e s@^v^m@@ hoge.txt > hogeLF.txt (同様にcontrolキーを押したままv,mと連続で押してください。エコーバックでは ^M に見えます) 2. vi hogeLF.txt (確認です。)

lts107
質問者

お礼

有難うございました。 解決することができました。

その他の回答 (3)

noname#128976
noname#128976
回答No.4

trコマンドというのがあります。 DOSから持ってきたファイルは以下の例で変更できます。 例) $ tr -d < 元のファイル名 > 変更されたファイル名

lts107
質問者

お礼

有難うございました。

  • windfactA
  • ベストアンサー率63% (52/82)
回答No.2

方法1: Solaris上で dos2unix というコマンドで変換できます。 方法2: FTPで持ってくるファイルがすべてテキストファイルであるならば、FTPをアスキーモード(コマンド:ascii)にする。 理屈ですが、PC上で改行を表す文字コードが「0x0d, 0x0a」の2バイトで表されるのに対して、Solaris(UNIX全般)では「0x0a」の1バイトで表されます。したがってPCのファイルをSolarisに持ってくると、改行(0x0a)の直前に「^M」がついてしまいます。0x0d = 13 ですから、アルファベットで13番目で「M」というわけです。

lts107
質問者

お礼

有難うございました。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

1.改行コードをLF(UNIX)でも保存出来るテキストエディタを使用する。 2.FFFTP等、転送の際に改行コードをCR+LF(Windows)からLF(UNIX)に変換してくれるFTPクライアントを使用する。 3.Solaris側にnkf等の文字コード変換コマンドをインストールし改行コードをCR+LF(Windows)からLF(UNIX)に変換する。 ちなみにCR(キャリッジ・リターン)をvi等で見ると「^M」と見えます。

lts107
質問者

お礼

有難うございました。

関連するQ&A

専門家に質問してみよう