• ベストアンサー

viコマンドについて

viコマンドを使用してファイルを編集したいのですがわからない ことがありましたので質問させていただきます。 皆様のお力をお貸しいただけないでしょうか。 仕様しているテキストエディタはviviであり、 勉強の一貫としてvi機能でファイル編集を行っています。 【内容】 行頭に下記の単語を含む行をファイルより抜き出したいと思って います。 ホスト名 IPアドレス サブネットマスク そのファイルは約25000行ほどありそれぞれの単語は5行間隔 などではなくランダム行毎に配置されています。 また、行頭の単語には似たようなものも存在しています。 ホスト数 IPMAP のように。  いくつか試してみたのですができませんでした。 :v/^[ホスト名|IPアドレス|サブネットマスク]/d :v/(^ホスト名|^IPアドレス|^サブネットマスク)/d :%g/^[^ホ|I|ス]/d 他にもいろいろ試したのですができませんでした。 『単語A or 単語B』の正規表現がわかっていないのが原因だとは 思っているのですが。。。 わかりずらい表現も多いかと思いますがご協力お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

ファイルより抜き出すってのがいまいちわかりませんが viの中で完結する必要が無ければ。 egrep '(^ホスト名|^IPアドレス|^サブネットマスク)' file.txt でどうでしょう? 見当違いだったら、すみません。

king0512
質問者

補足

ご回答ありがとうございます。 抜き出すとは特定の単語を含まない行を削除することを 表現したかったのですが。。。すみません、うまい表現では なかったと思います。 他の方のアドバイスからも『grep』を使う方がよいとの 指摘はいただいておりました、今回はこちらの方法で 編集しようと思います。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「or」はものによって「|」だったり「\|」だったりします. グルーピングのかっこも, 「\」が必要なときと不要なときがあります. まあ, 「抜き出す」の意味にもよりますが, #1 もいわれるように vi ではなく grep を使う方が素直だと思います.

関連するQ&A