如何在awk的记录分隔符中包含符号?我知道基本的语法是这样的:
awk 'BEGIN{RS="[:.!]"}{if (tolower($0) ~ "$" ) print $0 }'
,它将基于!将单行分隔为单独的记录。。和:但我也想包括符号,像绿色的复选标记这个✅
。我在理解语法方面有困难,所以我把它放在这样的
awk 'BEGIN{RS="[:.!u2705]"}{if (tolower($0) ~ "$" ) print $0 }'
似乎不起作用。
示例输入如下:
✅ Team collaboration ✅ Project organisation✅ SSO support✅ API Access✅ Priority Support
您需要使用带有替换操作符(|
)的正则表达式,因为您想要分割的字符由三个独立的UTF8代码单元组成:E2
,9C
和85
。
可以使用
awk 'BEGIN{RS="[:.!]|xE2x9Cx85"} tolower($0) ~ "$"'
查看在线演示:
#!/bin/bash
s='✅ Team collaboration ✅ Project organisation✅ SSO support✅ API Access✅ Priority Support'
awk 'BEGIN{RS="[:.!]|xE2x9Cx85"} tolower($0) ~ "$"' <<< "$s"
输出:
Team collaboration
Project organisation
SSO support
API Access
Priority Support
注意print $0
是默认操作,不需要显式使用。