如何找到定界符之间的子字符串的数量?

如何找到定界符之间的子字符串的数量?

我有以下字符串

某物(1)^^^某物(2)^^^某物(3)^^^ ... ^^^某物(n)

如何查找

某物

在字符串中。

答案1

这个命令可以帮你完成以下任务:

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

你也可以用你喜欢的字段分隔符代替空格。如果你坚持使用 ^^^ 作为字段分隔符,那么你应该使用

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

答案2

如果您显示真实数据,我可以为您提供更好的答案,但假设您正在寻找以 结尾的最长的非空白字符串(),您可以这样做:

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

解释

-P启用标志grepPCRE 函数-o导致它仅在单独的行上打印每个匹配的字符串。

正则表达式匹配:

  • [^\s]+:尽可能多的非空白字符
  • \(:一个左括号
  • [^\)]+?\)):尽可能多的非字符,直到第一个)

这将打印:

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

然后你通过它来wc -l计算行数。

相关内容