awk -F'[ ()+:]+' '
我在脚本中使用它。在这种情况下,我可以从以下位置获取括号中的时间:
Fri Dec 18 11:13 - 11:15 (00:02)
Fri Dec 18 09:11 - 19:42 (1+10:31)
但是它是如何工作的呢?有人能解释一下吗?
答案1
awk
将输入记录拆分为字段,并使用字段分隔符(FS
)来实现。-F
选项用于设置FS
。当FS
长度为多个字符时,它将被视为正则表达式。
在这种情况下,FS
是[ ()+:]+
:
[...]
,称为括号表达式,用于匹配多个字符中的一个。[ ()+:]
表示空格、括号+
或:
字符中的任意一个。+
在字符或括号表达式等之后,匹配一个或多个该字符、表达式等。
因此,该模式表示一个或多个空格、括号、加号或冒号。
使用此表达式拆分成字段,您将看到:
)
结束该行意味着最后一个字段为空1+10:31
和00:02
都进行了拆分,以便倒数第二和第三个字段分别是小时和分钟,因为+
和:
都用于分隔字段。