2016-12-13 4 views

ответ

1

С grep, вы могли бы соответствовать по шаблону, который соответствует точности 1 или 2 слова:

grep -E '^\w+(\s+\w+)?$' someFile.txt 

(Обратите внимание, что это предполагает, что вы либо не имеют каких-либо пустые строки, или не хотите, чтобы выбрать . те, в любом случае)


с awk вы могли бы просто использовать номер состояния полей:

awk 'NF < 3' someFile.txt 
1

Просто используйте AWK вместо grep для этого, как это:

awk 'NF < 3' file 

NF обозначает количество полей.

1

Grep

grep -E '^$|^\S+(\s+\S+)?$' file 
  • \S не является символ пробела;
  • ? делает предыдущий шаблон необязательным (повторяя ноль или один раз).
  • | является оператором чередования (результат true, если любой из шаблонов соответствует);
  • ^$ соответствует пустой строке;

Тот же шаблон будет работать с опцией -P (также совместимыми с Perl регулярными выражениями).


ГНУ Сед:

sed -nr '/^$|^\S+(\s+\S+)?$/ p' file 

где

  • p это команда, которая печатает текущее пространство шаблона (текущей строки, в частности), если предыдущий шаблон совпадает линия;
  • -n отключает автоматическую печать пространства шаблонов.

Образец такой же, как и для команды grep.


Perl

perl -C -F'/\s+/' -ane 'print if scalar @F < 3' < file 

где

  • -C обеспечивает поддержку Unicode;
  • -F указывает шаблон для -a переключатель (автоматический режим, который разбивает входной сигнал на @F массив);
  • -n заставляет сценарий, заданный -e, запускать для каждой строки из ввода;
  • scalar @F возвращает количество элементов в @F, то есть количество полей.
+0

Как пользователь @Amber сказал ниже, инструкция grep может пропускать пробелы. Есть ли модификация для включения пробелов? И в чем разница между -E и -P? – Tom

+0

@Tom, grep пропускает пустые строки, если шаблон не соответствует пустым строкам. Я добавил пустые строки с '^ $ |' в командах _sed_ и _grep_. Grep's -P добавляет дополнительные функции, описанные в 'pcresyntax (3)' и 'pcrepattern (3)', если PCRE доступен в системе. Кстати, решение Амбера учитывает только ASCII «слова» '\ w +' –

 Смежные вопросы

  • Нет связанных вопросов^_^