16

テキストファイルがあり、すべての行の最初の単語を除くすべての単語を削除したいのですが、これを行う方法がわかりません。

だから、私が持っている場合:

one two three
four five
six

私は一緒にいたい:

one
four
six

何かアイデアはありますか?

4

3 に答える 3

20

行が空白で始まらない場合は、' .*'(最初​​の単語以降のすべてに一致する)空の文字列に置き換えることができます。

:%s/ .*//g
于 2012-12-15T10:29:16.443 に答える
7

より堅牢な解決策は、これらの種類の操作に非常に優れたプログラムを介してフィルター処理することですawk

次のコンテンツがあるとします。

one two three

  four five
            six

実行:%!awk '{print $1}'すると、次のようになります。

one

four
six

awkのデフォルトのフィールド区切り文字はスペースですが、必要に応じて、必要なものに変更できます。

于 2012-12-16T19:42:50.477 に答える
2

または、マクロを使用して実行することもできます。通常モードで入力qaして、レジスタ a にマクロの記録を開始します。次に、入力0elDjして現在の行の最初の単語以外をすべて削除し、次の行に移動します。もう一度入力qして、マクロの記録を終了します。

これで、.を使用して任意の行でマクロを起動できます@a。実行:%norm! @aして、バッファ内のすべての行にマクロを適用します。

このようにして、置換だけでなく、必要な複雑な操作を繰り返すことができます。私はマクロが大好きです:)

編集:行が厳密に2文字未満の場合は機能しないことに注意してください。このため、これは通常、この問題に対する最善のアプローチではありません。

于 2012-12-15T22:07:46.337 に答える