У меня есть строка после
что-то (1)^^^ что-то (2)^^^ что-то (3)^^^ ... ^^^ что-то (n)
как найти номер
что-то (ы)
в строке.
У меня есть строка после
что-то (1)^^^ что-то (2)^^^ что-то (3)^^^ ... ^^^ что-то (n)
как найти номер
что-то (ы)
в строке.
Эта команда сделает для вас:
awk -F " " '{print NF}' filename
и вы можете заменить ваш любимый разделитель полей для пространства. Если вы настаиваете на использовании ^^^ в качестве разделителя полей, вам следует использовать
awk -F '\\^\\^\\^' "{print NF}" filename
Я могу дать вам лучший ответ, если вы покажете свои реальные данные, но, если вы ищете самую длинную строку без пробелов, которая заканчивается на ()
, вы можете сделать это:
$ 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
для подсчета количества строк.