awk中的多个字段分隔符

ila*_*nsh 10 regex string awk

我有这个字符串

-foo {{0.000 0.000} {648.0 0.000} {648.0 1980.0} {0.000 1980.0} {0.000 0.000}}
Run Code Online (Sandbox Code Playgroud)

我想将它分成数字并迭代它们,谢谢尝试使用字段分隔符,但没有成功我怎么能用awk做到这一点?

Gil*_*not 17

试着这样做:

awk -F'}+|{+| ' '{for (i=1; i<=NF; i++) if ($i ~ "[0-9]") print $i}' file.txt
Run Code Online (Sandbox Code Playgroud)

字段分隔符FS(-F开关)可以是字符,单词,正则表达式或一类字符.

您也可以使用它:

awk 'BEGIN{FS="}+|{+| "} {for(i=1;i<=NF;i++) if($i ~ "[0-9]")print $i}' file.txt
Run Code Online (Sandbox Code Playgroud)

说明

  • foo|bar|base 是一个正则表达式,它可以匹配由分隔的任何字符串 |
  • }+|{+|,我们可以选择匹配}至少一个文字:+或文字{至少一个:+或空格.
  • 你也可以使用一类角色来做同样的事情:[{} ]两者都有效