Vimなしでシェルスクリプトでテキストを置き換えてエンコードを変更するには?

Vimなしでシェルスクリプトでテキストを置き換えてエンコードを変更するには?

次のシェルスクリプトがあります。

vim file.xml -c "s/\r/\r/g" -c "set fileencoding=utf8" -c "wq"

(macOS)端末ではうまく動作しますが、他のプログラム(AppleScriptを実行しているFileMaker)で実行すると動作が停止します。私の考えでは、Vimが実際に起動していて(ターミナルで点滅しているのを見ましたが)、FileMakerやAppleScriptが失敗するためです。

インターフェイスを持つアプリケーションを起動せずにコマンドラインツールのみを使用して上記と同じことを行うにはどうすればよいですか?

ベストアンサー1

exスクリプトを担当する人はVimです。

Vimと同じコマンドを使用しますが、端末なしで実行できます。 「ミュート」フラグを渡すことができます-s

バラより:help -s-ex:

-s:自動またはバッチモード。 [...] Vim を使用してファイルから Ex コマンドを実行する場合に使用します。端末の代わりに。 [...]

(これを行うと-s診断やエラーメッセージが表示されず、追加の副作用がある可能性があります。詳細については、完全なヘルプを参照してください。あなたの場合は必要ないかもしれませんが、おそらく必要です)。

次のようにコマンドを実行できます。

ex -s file.xml -c "s/\r/\r/g" -c "set fileencoding=utf8" -c "wq"

「ex-mode」も-eこのフラグと一緒に使用できるため、このフラグも機能します。

vim -e -s file.xml -c "s/\r/\r/g" -c "set fileencoding=utf8" -c "wq"

おすすめ記事