Удалить строки из текстового файла - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь удалить строки, содержащие только 2 слова или меньше. Мой текстовый файл выглядит так:

1.just be patient.
2.posters?
3.I have got two jobs, but they're not for you.
4.what?
5.I am.

Что должно дать мне вывод ...

1.just be patient.
2.I have got two jobs, but they're not for you.

Может кто-нибудь предложить мне лучший способ сделать это ... (используя sed или что-то в этом роде)

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 19 октября 2019

Это должно быть простой задачей с awk, если вы согласны с этим.

awk 'NF>2' Input_file

Объяснение:

  • Проверка условия здесь NF>2, если NF (количество полей, переменная по умолчанию в awk), значение больше 2.

  • awk по умолчанию имеет пробел в качестве разделителя, поэтому согласно OP должно быть более 2 слов, следовательно, при условии >2.

  • Теперь идет часть того, как печатаются строки, удовлетворяющие условию? awk работает над методом условия и действия, если условие ИСТИНА, и никакое действие не упомянуто (как этот код), то по умолчанию произойдет печать текущей строки.

0 голосов
/ 19 октября 2019

Это может сработать для вас (GNU sed):

sed -nE 's/\S+/&/3p' file

Печатать только строки с 3 или более группами непробельных символов.

...