/ / Vimでパターンを照合した後、各行の最後までテキストを削除するにはどうすればよいですか? -vim、sed

どのようにVimでパターンにマッチした後に各行の最後までテキストを削除するのですか? - vim、sed

次の内容のファイルがあります。

domproxy1.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy10.dom.company.com Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy11.dom.company.com Centos CentOS 6.5 production  X8DTU   7 days ago  Edit
domproxy15.dom.company.com Centos CentOS 6.6 production  X8DTU   8 days ago  Edit
domproxy2.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy3.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy4.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy5.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy6.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy9.dom.company.com  Centos CentOS 6.5 production  S5520UR   7 days ago  Edit
domproxy29.dom.company.com Centos CentOS 6.6 production  S2600GZ   about 1 month ago Edit
orgcmsui03.nj.company.com  Centos CentOS 6.6 production  Virtual Mac...    6 days ago  Edit
domftp01.dom.company.com Centos CentOS 6.4 production  ProLiant DL...    40 minutes ago  Edit

各行の終わりを置き換えたい」 (.com *) 〜と (.com)、つまり、各行のホスト名以降をすべて削除することを意味します。

内部 vim、私は次のことを試みました。

:%s/.com $/.com/g
:%s/.com*$/.com/g
:%s/.com .*/.com/g

私はこれが私がやっていることを知っている限り:

:%s/ - search on all the file
.com .*/ - the search pattern
.com/ - the replace pattern
/g - global

しかし、無駄に、私は何を間違っていますか?

回答:

回答№1は2
:%s/[.]com.*/.com

これはまさにあなたが必要とすることをします。

%s ファイル全体を検索

/[.]com.* 検索 .com そして、行末まで続くもの

/.com 検索されたパターンを .com

あなたは使用する必要はありません /g 最後に、発生するのは1つだけなので .com 各行に。

したくない場合は、以下のコマンドを使用します .company.com に置き換えられる .com

:%s/[.]com>.*/.com

回答№2については2

好き :normal これらの種類のタスク:

:%norm f D

ただし、次のいずれかを使用して、もう少し* nix-yを実行できます。 awk または cut でフィルタリングすることによって :%!.

:%!cut -f1 -d" "
:%!awk "{print $1}"
:%!awk "$0=$1"

を使用した置換 zs

:%s/.comzs.*

詳細については、以下を参照してください。

:h :normal
:h f
:h D
:h :range!
:h /zs
:h magic

回答№3の場合は1

また、 の力 g

:g/[.]com>/normal nelD

または

:g/[.]com/normal nelD

あなたが望むように。

以下のように機能します:

各行で見つける .com コマンドを実行する nelD正常 モード。

n 次の試合を見つける、 e 単語の最後に移動し、 l 右に移動し、 D行末まで削除します。


回答№4の場合は1

私はこれを好きです:

:%s/.comzss.*/

一致 dot "com" whitespace (スペースやタブなど)、すべてを削除します dot com.

注意ドット それ以外の場合はエスケープされます どれか 文字が一致します。