awk -F'[ ()+:]+' '
Run Code Online (Sandbox Code Playgroud)
我在我的脚本中使用它。在这种情况下,我可以花时间在括号中,例如:
Fri Dec 18 11:13 - 11:15 (00:02)
Fri Dec 18 09:11 - 19:42 (1+10:31)
Run Code Online (Sandbox Code Playgroud)
但它是如何工作的?有人可以解释我吗?
awk将输入记录拆分为fields,并使用 Field Separator ( FS) 来执行此操作。该-F选项用于设置FS. 什么时候FS是多个字符时,将其视为正则表达式。
在这种情况下,FS是[ ()+:]+:
[...],称为括号表达式,用于匹配多个字符之一。[ ()+:]表示任何一个空格,括号+或:字符。+ 在字符或括号表达式等之后,匹配该字符、表达式等中的一个或多个。因此,该模式表示一个或多个任何空格,括号、加号或冒号。
使用此表达式拆分为字段,您将看到:
) 结束该行意味着最后一个字段为空1+10:31和00:02两者都分开,以便倒数第二个和第三个字段是小时和分钟,因为+和:都用于分隔字段。