次の処理を行う Unix シェル スクリプトがあります。
- ファイルのバックアップを作成します
- ファイルにテキストを追加します
#2 でテキストを挿入すると、ファイルのすべての行に ^M が追加されます。
例えば:
echo " a" >> /cust/vivek.txt
echo " b" >> /cust/vivek.txt
vi vivek.txt
abc^M
bcd^M
a^M
b^M
これを回避する方法はありますか?
どのように文字echo
を生成できるかはわかりませんが、次のようにファイルで^M
実行することで文字を削除できます。dos2unix
dos2unix /cust/vivek.txt
^M
はキャリッジ リターンであり、Windows からファイルをコピーするときによく見られます。使用する:
od -xc filename
これにより、ファイルがどのように見えるかの低レベルのリストが得られるはずです。ファイルが Windows からのものではない場合、端末の設定が正しく変換されていない可能性があります。TERM 環境変数が正しいことを確認してください。
ファイルが Windows からのものである場合は、dos2unix
またはを使用します。sed 's/\r//' file > file.new
これは、連結ではなく、vi 設定のアーティファクトであると思われます。
何が
cat -v -e filename
見せる ?このコマンドは、ファイルをダンプし、制御文字をマークして、実際にファイルに何が含まれているかを明確にします。このスーパーユーザーの質問/回答セットも参照してください。
^M は、Windows で使用されたときにファイルに入力されたメタ文字です。
dos2unix コマンドでこれを修正できます。
dos2unix <filename>