16

次の処理を行う Unix シェル スクリプトがあります。

  1. ファイルのバックアップを作成します
  2. ファイルにテキストを追加します

#2 でテキストを挿入すると、ファイルのすべての行に ^M が追加されます。

例えば:

echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt

vi vivek.txt
abc^M
bcd^M
a^M
b^M

これを回避する方法はありますか?

4

6 に答える 6

18

どのように文字echoを生成できるかはわかりませんが、次のようにファイルで^M実行することで文字を削除できます。dos2unix

dos2unix /cust/vivek.txt
于 2013-02-22T09:37:42.767 に答える
6

^Mはキャリッジ リターンであり、Windows からファイルをコピーするときによく見られます。使用する:

od -xc filename

これにより、ファイルがどのように見えるかの低レベルのリストが得られるはずです。ファイルが Windows からのものではない場合、端末の設定が正しく変換されていない可能性があります。TERM 環境変数が正しいことを確認してください。

ファイルが Windows からのものである場合は、dos2unixまたはを使用します。sed 's/\r//' file > file.new

于 2013-02-22T09:41:55.943 に答える
3

これは、連結ではなく、vi 設定のアーティファクトであると思われます。

何が

cat -v -e filename

見せる ?このコマンドは、ファイルをダンプし、制御文字をマークして、実際にファイルに何が含まれているかを明確にします。このスーパーユーザーの質問/回答セットも参照してください。

于 2013-02-22T09:36:39.737 に答える
2

^M は、Windows で使用されたときにファイルに入力されたメタ文字です。

dos2unix コマンドでこれを修正できます。

dos2unix <filename>
于 2013-02-22T10:32:35.343 に答える