- ベストアンサー
viの行削除コマンドを教えて下さい。
viコマンドでご教授いただきたい事があります 「行中に"hoge"を含む全ての行を削除する」 「行頭に"hoge"がある、全ての行を削除する」 を実現する ”: ” から始まるコマンド文はありませんでしょうか? 基本中の基本ですが、 検索して調べる力がありませんでした。 ごめんなさい。 viコマンドの良いサイトあれば併せて教えて下さい。 どうぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
英語で良ければ、 vi command summaryなどのキーワードで検索すれば出てきます。 とりあえず、gとかvについて書かれたWEBページ(viではなくvimの解説ですが) を1つ紹介しておきます。 行範囲指定 g /正規表現/ exコマンド という使い方をします。 100行目から200行目までの間で"hoge"を含む行はファイル末に移動する、というのなら :100,200g/hoge/m$
その他の回答 (3)
- mac_res
- ベストアンサー率36% (568/1571)
行中に"hoge"を含む全ての行を削除する :g/hoge/d 行頭に"hoge"がある、全ての行を削除する :g/^hoge/d
お礼
これです!!! ありがとうございました。
補足
もう一つ質問させてください。 :g とか :v とか、 WEBで検索しても見付けられないのですが、 説明が記述されているURLご存知ないでしょうか?
- Chronos198
- ベストアンサー率30% (105/349)
:%s/.*hoge.*//g :%s/^hoge.*//g ではいかがでしょう? . 改行以外の文字 * 0回以上の繰り返し ^ 行頭にマッチ ただし、この方法では空行が残ってしまいます。
お礼
ありがとうございます。 そうそう、それが言いたかったんです。 けど、空行も消したいなぁ。 :vほにゃほにゃで何とかならないでしょうか? :v/.*hoge.*/d/ で、『hogeに一致する行だけ残す』が実現できました。 もう一押し。
補足
ありがとうございます。 そうそう、それが言いたかったんです。 けど、空行も消したいなぁ。 :vほにゃほにゃで何とかならないでしょうか?
- Paul_xxx
- ベストアンサー率56% (27/48)
viはエディタなのでそういったマクロ的な処理は シェルスクリプトなりで実現するのが良いと思います。 (viのみで一度にはできません) viの中で行う手順をしめします。 検索は、 / と入力してから検索文字を入力してEnter 繰り返し検索する場合は、n と入力します。 行の削除は、コマンドモードで、dd と入力します。 直前のコマンドを繰り返すのは . で出来ます。 上記を組み合わせると /hoge で検索 dd で削除 あとは、n . と交互にキーを押せば削除できるはずです 手元に今環境が無いので確認できませんが やってみてください。
お礼
素早い反応ありがとうございます。 :%s/なになに//g 辺りを活用して何かできませんでしょうか? 教えて頂いた手法も大好きなのですが、 今回はファイルが大きすぎて、一発変換が求められます。 ありがとうございました。
お礼
1時間ぐらい探し続けた物がここにありました。 ありがとうございます。