我想寫一個awk條件來匹配一個字符串,如果它以大寫字母開頭的話。這是一個示例數據文件。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
我看不到你的結果。你的'LANG'環境變量持有什麼? – 2011-04-06 17:13:37
從gawk手冊頁:字符類只在字符列表的 括號內的正則表達式中有效。 – 2011-04-06 17:15:05
我可能明白你在說什麼。我需要'[[A-C]]'? 'awk'{if($ 0〜/^[[A-C]] /)print}'test'給出0個結果。 gawk也一樣。 – schmmd 2011-04-06 18:48:10