Bash スクリプトの実行 ViM コマンドが '$' コマンドを解釈していないようです

Bash スクリプトの実行 ViM コマンドが '$' コマンドを解釈していないようです

私は特定のViMコマンドをLinux Bashスクリプトに移動しようとしています。ViMではコマンドは

:g/^SOMEWORD$/d

ある単語のみを含み、他に何も含まれていない行を削除します。

これをbashスクリプトに移動すると動作しなくなります

vim -e -s /tmp/file.txt << EOF
    :g/^SOMEWORD$/d
    :update
    :quit
EOF

をエスケープして$も違いはないようですが、$このタイプのシナリオで を使用する別の方法があるのでしょうか、それとも何か他のことを見逃しているのでしょうか?

vim -e -s /tmp/file.txt << EOF
    :g/^SOMEWORD\$/d
    :update
    :quit
EOF

答え1

理由は分かりませんが、ViMで直接ファイルを編集するとUnixファイルとして扱われますが、ヒアドキュメントを介して編集するとDOSファイルとして扱われます。この問題を解決する非常に便利なツールを見つけました。

`yum install dos2unix`
dos2unix ./filename.txt

これにより、ファイルはUnixファイル標準に準拠するようになります。

関連情報