我的文件编码与机器不同。使用正则表达式时,.
与当前字符集的不可打印字符不匹配。
以下打印0:
echo -e "\xfc" | awk '{ print match( $0, "^.*$" ) }'
如何匹配所有字符,包括不可打印的字符?
答案 0 :(得分:1)
我可以确认它不适用于de_DE.UTF-8
区域设置,但de_DE.iso88591
和C
都会打印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。