Я ищу команду vim, которая сопоставляет и удаляет все строки, содержащие 4 или более слов, где слова разделяются разделителем, в данном случае символом пробела.
До
один два три четыре пять один два три четыре один два три
один два три четыре пять
один два три четыре
один два три
После
:%s/\v(\w+ \w+ \w+)\zs.*//g \v ................. very magic (avoids backslashing everything) (\w+ \w+ \w+) ...... a group of three words \zs.* .............. starts considering what that comes after
Пробудитесь на помощь!
awk 'NF < 4' foo.txt > output.txt
Использование фильтра Vim, :!, команда (см. :h :range!):
:!
:h :range!
:%!awk 'NF < 4'
Или чистый Vim с командой :globalи :delete (см. :h :g & :h :d):
:global
:delete
:h :g
:h :d
:g/\s.*\s.*\s/d_