-1

У меня есть строка после

что-то (1)^^^ что-то (2)^^^ что-то (3)^^^ ... ^^^ что-то (n)

как найти номер

что-то (ы)

в строке.

2 ответа2

1

Эта команда сделает для вас:

 awk -F " " '{print NF}' filename

и вы можете заменить ваш любимый разделитель полей для пространства. Если вы настаиваете на использовании ^^^ в качестве разделителя полей, вам следует использовать

  awk -F '\\^\\^\\^'  "{print NF}" filename
0

Я могу дать вам лучший ответ, если вы покажете свои реальные данные, но, если вы ищете самую длинную строку без пробелов, которая заканчивается на () , вы можете сделать это:

$ string="foo(bar)blah blah bob harry(baz) more stuff this(one) not that one ()"
$ echo $string | grep -Po '[^\s]+\([^\)]+?\)' | wc -l
3

объяснение

Флаг -P для grep включает PCRE, а -o заставляет печатать каждую из соответствующих строк только в отдельной строке.

Регулярное выражение соответствует:

  • [^\s]+ : как можно больше непробельных символов
  • \( : открывающая скобка
  • [^\)]+?\) : как можно больше не ) символов до первого ) .

Это напечатало бы:

$ echo $string | grep -Po '[^\s]+\([^\)]+?\)' 
foo(bar)
harry(baz)
this(one)

Затем вы передаете это через wc -l для подсчета количества строк.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .