awk 和等价物 类
awk and equivalence classes
gnu awk 支持POSIX equivalence classes吗?
是否可以像在 grep 中那样使用 awk 匹配 [[=a=]]?
$ echo ábÅ | grep [[=a=]]
ábÅ
$ echo ábÅ | grep -o [[=a=]]
á
Å
见here,接近尾声:
相同字符列表的区域特定名称。名称包含在“[=”和“=]”之间。例如,名称“e”可能用于表示所有“e”、“ê”、“è”和“é”。在这种情况下,‘[[=e=]]’是匹配‘e’、‘ê’、‘é’或‘è’中任何一个的正则表达式。
这些功能在非英语地区非常有价值。
注意:gawk 用于正则表达式匹配的库函数目前只能识别 POSIX 个字符 类;他们不识别整理符号或等价物 类.
根据 GAWK User's Guide、"Caution: The library functions that gawk uses for regular expression matching currently only recognize POSIX character classes; they do not recognize collating symbols or equivalence classes."。
因此,您将不得不在正则表达式 /[aáÅ]/
或任何您要查找的内容中写出允许的等效项。
有可识别区域设置的字符范围,但这似乎不是您要问的内容。
你会惊讶于 gawk 这些天愿意做的事情:
echo 'eÅêéAEè' \
\
| mawk 'BEGIN { FS=RS="^$"
ORS= ""
} sub(/[\n]$/,"") +\
gsub("[ \t]+|[[=10=]0-\b\v-!-7]|"\
"[0-7]+","&\n")' \
\
| gtee >( gpaste -s -d':' - | ecp >&2; ) \
\
| LC_ALL=C gawk -b -e '/[=[:lower:]=]|[=Å=]/'
e:Å:ê:é:A:E:è
1 e
2 Å
3 ê
4 é
5 è
即使我强制使用 non-multibyte "C" 语言环境以及在 gawk 中使用字节模式缺陷,它也愿意在更大的 class 级别匹配它。但是,如果我只指定了斯堪的纳维亚语 A-ring.
,它就不愿意匹配 ASCII“A”
gnu awk 支持POSIX equivalence classes吗?
是否可以像在 grep 中那样使用 awk 匹配 [[=a=]]?
$ echo ábÅ | grep [[=a=]]
ábÅ
$ echo ábÅ | grep -o [[=a=]]
á
Å
见here,接近尾声:
相同字符列表的区域特定名称。名称包含在“[=”和“=]”之间。例如,名称“e”可能用于表示所有“e”、“ê”、“è”和“é”。在这种情况下,‘[[=e=]]’是匹配‘e’、‘ê’、‘é’或‘è’中任何一个的正则表达式。
这些功能在非英语地区非常有价值。
注意:gawk 用于正则表达式匹配的库函数目前只能识别 POSIX 个字符 类;他们不识别整理符号或等价物 类.
根据 GAWK User's Guide、"Caution: The library functions that gawk uses for regular expression matching currently only recognize POSIX character classes; they do not recognize collating symbols or equivalence classes."。
因此,您将不得不在正则表达式 /[aáÅ]/
或任何您要查找的内容中写出允许的等效项。
有可识别区域设置的字符范围,但这似乎不是您要问的内容。
你会惊讶于 gawk 这些天愿意做的事情:
echo 'eÅêéAEè' \
\
| mawk 'BEGIN { FS=RS="^$"
ORS= ""
} sub(/[\n]$/,"") +\
gsub("[ \t]+|[[=10=]0-\b\v-!-7]|"\
"[0-7]+","&\n")' \
\
| gtee >( gpaste -s -d':' - | ecp >&2; ) \
\
| LC_ALL=C gawk -b -e '/[=[:lower:]=]|[=Å=]/'
e:Å:ê:é:A:E:è
1 e 2 Å 3 ê 4 é 5 è
即使我强制使用 non-multibyte "C" 语言环境以及在 gawk 中使用字节模式缺陷,它也愿意在更大的 class 级别匹配它。但是,如果我只指定了斯堪的纳维亚语 A-ring.
,它就不愿意匹配 ASCII“A”