如何匹配不可打印的字符?

时间:2013-11-19 07:53:19

标签: regex awk

我的文件编码与机器不同。使用正则表达式时,.与当前字符集的不可打印字符不匹配。

以下打印0:

echo -e "\xfc" | awk '{ print match( $0, "^.*$" ) }'

如何匹配所有字符,包括不可打印的字符?

1 个答案:

答案 0 :(得分:1)

我可以确认它不适用于de_DE.UTF-8区域设置,但de_DE.iso88591C都会打印1。我不能告诉你原因,但[:alpha:]字符类匹配:

echo -e "\xfc" | awk '{ print match( $0, "^([[:alpha:]]|.)*$" ) }'

或者您可以更改awk来电的区域设置:

OLDLANG=$LANG; export LANG=de_DE.iso88591; echo -e "\xfc" | awk '{ print match( $0, "^.*$" ) }'; export LANG=$OLDLANG

另见Using special characters in a string argument to the awk match function. Current locale settings