タグ付けされた質問 「ex-command」

6
ファイルの最後にまだ行がない場合にのみ、行を追加する方法は?
行を追加してインプレースでファイルを編集したいのですが、まだ存在しない場合に限り、スクリプトを完全なものにします。 通常、私は次のようなことをします: cat >> ~/.bashrc <<EOF export PATH=~/.composer/vendor/bin:\$PATH EOF ansible(line+ insertafter=EOF+ regexp)を介してそれを行うことも可能ですが、それは別の話です。 vi / exでは、次のようなことができます。 ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc しかし、理想的には同じ行を繰り返さずに、行が既に存在する(したがって何もしない)かどうかを確認するにはどうすればよいですか? それともExエディタでそれを行う簡単な方法がありますか?

2
exコマンドを使用して、2つの行が同一かどうかを確認しますか?
私はこの質問を見ていて、純粋に POSIX を使用sedする私の答えを どのように実装できるのか疑問に思いました。ex 秘訣はsed、ホールドスペースとパターンスペースを比較して(とG;/^\(.*\)\n\1$/{do something})が完全に等しいかどうかを確認することは できますが、ではそのようなテストを行う方法がないことですex。 Vim Yでは、最初の行をアンクしてから入力 :2,$g/<C-r>0/dして、指定したことをほぼ実行できます。ただし、最初の行に非常に単純な英数字のテキスト以外が含まれている場合、行は正規表現としてダンプされるので、これは実際に不自然になります。 、比較のための単なる文字列ではありません。(最初の行にスラッシュが含まれている場合、行の残りの部分はコマンドとして解釈されます!) したがってmyfile、最初の行と同じであるすべての行を削除したい場合(ただし、最初の行は削除しない場合)は、どのように使用できexますか?それについて、私はそれをどのように使用できviますか? 別の行と完全に一致する行を削除するPOSIXの方法はありますか? おそらくこの架空の構文のようなもの: :2,$g/**lines equal to "0**/d
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.