grep строки в зависимости от длины - PullRequest
0 голосов
/ 14 мая 2019

Можно ли искать строки на основе длины в конкретном файле, используя grep?

Я пытался использовать awk, но не работал

awk '$0~"^s" && length($0)==31' strings.xml

Если вы не используете grep, это можно найти с помощью другого инструмента командной строки.

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

awk по умолчанию это разделение полей по пробелам, поэтому, если вы хотите сопоставить первое совпадение, начинающееся с s и иметь длину 31, вы можете использовать:

awk '$1 ~ /^s.{30}$/ {print}' strings.xml

/^s соответствует строке, начинающейся с s, а .{30}$ соответствует любому символу . (кроме ограничителей строки) {30} ровно 30 раз

0 голосов
/ 14 мая 2019

Вы можете использовать:

grep -E '^s.{30}$' strings.xml

Регулярное выражение соответствует s в начале строки, за которой следуют любые 30 символов, а затем конец строки. Таким образом, он будет соответствовать строке с ровно 31 символом, начинающимся с s.

Но команда awk эквивалентна, поэтому, если она не сработает, это тоже не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...