私は特定の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ファイル標準に準拠するようになります。