プロが教える店舗&オフィスのセキュリティ対策術

viコマンドでご教授いただきたい事があります

「行中に"hoge"を含む全ての行を削除する」
「行頭に"hoge"がある、全ての行を削除する」
を実現する ”: ” から始まるコマンド文はありませんでしょうか?

基本中の基本ですが、
検索して調べる力がありませんでした。
ごめんなさい。

viコマンドの良いサイトあれば併せて教えて下さい。
どうぞよろしくお願いいたします。

A 回答 (4件)

英語で良ければ、 vi command summaryなどのキーワードで検索すれば出てきます。


とりあえず、gとかvについて書かれたWEBページ(viではなくvimの解説ですが) を1つ紹介しておきます。

行範囲指定 g /正規表現/ exコマンド
という使い方をします。
100行目から200行目までの間で"hoge"を含む行はファイル末に移動する、というのなら
:100,200g/hoge/m$

参考URL:http://www.glasscom.com/tone/linux/Reference/Vi/ …
    • good
    • 0
この回答へのお礼

1時間ぐらい探し続けた物がここにありました。
ありがとうございます。

お礼日時:2006/03/09 16:38

行中に"hoge"を含む全ての行を削除する


:g/hoge/d

行頭に"hoge"がある、全ての行を削除する
:g/^hoge/d

この回答への補足

もう一つ質問させてください。

:g とか :v とか、
WEBで検索しても見付けられないのですが、
説明が記述されているURLご存知ないでしょうか?

補足日時:2006/03/08 13:28
    • good
    • 1
この回答へのお礼

これです!!!
ありがとうございました。

お礼日時:2006/03/08 13:14

:%s/.*hoge.*//g


:%s/^hoge.*//g

ではいかがでしょう?
. 改行以外の文字
* 0回以上の繰り返し
^ 行頭にマッチ

ただし、この方法では空行が残ってしまいます。

この回答への補足

ありがとうございます。

そうそう、それが言いたかったんです。
けど、空行も消したいなぁ。

:vほにゃほにゃで何とかならないでしょうか?

補足日時:2006/03/08 10:43
    • good
    • 0
この回答へのお礼

ありがとうございます。

そうそう、それが言いたかったんです。
けど、空行も消したいなぁ。

:vほにゃほにゃで何とかならないでしょうか?

:v/.*hoge.*/d/
で、『hogeに一致する行だけ残す』が実現できました。
もう一押し。

お礼日時:2006/03/08 10:48

viはエディタなのでそういったマクロ的な処理は


シェルスクリプトなりで実現するのが良いと思います。
(viのみで一度にはできません)

viの中で行う手順をしめします。
検索は、 / と入力してから検索文字を入力してEnter
繰り返し検索する場合は、n と入力します。
行の削除は、コマンドモードで、dd と入力します。
直前のコマンドを繰り返すのは . で出来ます。

上記を組み合わせると
/hoge で検索 dd で削除
あとは、n . と交互にキーを押せば削除できるはずです
手元に今環境が無いので確認できませんが
やってみてください。

参考URL:http://www.glasscom.com/tone/linux/Reference/Vi/ …
    • good
    • 0
この回答へのお礼

素早い反応ありがとうございます。
:%s/なになに//g
辺りを活用して何かできませんでしょうか?

教えて頂いた手法も大好きなのですが、
今回はファイルが大きすぎて、一発変換が求められます。

ありがとうございました。

お礼日時:2006/03/08 10:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!