Я хотел бы написать условное выражение awk, соответствующее строке, если оно начинается с заглавной буквы.Вот пример файла данных.
a
b
c
A
B
C
d
e
Допустим, я хочу сопоставить все строки, соответствующие символам ABC.
awk '{ if ($1 ~ /^[ABC]/) print }' test
A
B
C
Достаточно просто.Но это не работает, если я использую класс персонажа.Случай игнорируется.
awk '{ if ($1 ~ /^[A-C]/) print }' test
b
c
A
B
C
Интересно, что это работает:
awk '{ if ($0 ~ /^[[:upper:]]/) print }' < test
A
B
C
Из документации я бы ожидал, что команда будет:
awk '{ if ($0 ~ /^[:upper:]/) print }' < test
Что янедоразумение?В частности, почему [A-C]
не чувствителен к регистру и почему мне нужно написать [[:upper:]]
вместо [:upper:]
?
echo $LANG
en_US.utf8