有人可以解釋爲什麼此代碼不能按預期工作? 我希望它只匹配第一個字符,它與字面字符,但通配符(。)和字符類行爲奇怪:grep:「^」。不正確
我用-o只是爲了演示如何匹配,它doesn根本不會改變什麼比賽。
$ echo foo | grep -o '^.'
f
o
o
一些更意外的行爲:如預期在這些情況下
$ echo foobarbazquux | grep -o '^[foarqux]'
f
o
o
$ echo foobarbazquux | grep -o '^.[^u]'
fo
ob
ar
ba
zq
Esentially開頭的行的匹配(^)沒有表現。有什麼辦法可以讓它更正常嗎?
如果您不使用-o,它確實工作錯了嗎?我的猜測是-o輸出可能在應用錨點之前產生。 – ninjalj 2010-08-26 22:41:20
我看到與GNU grep 2.5.1完全相同的行爲。就好像grep在每次比賽結束後重新開始搜索一樣。另一個測試用例:'echo foobarfoo | egrep -o'foo |^bar''顯示'foo','bar','foo'。 – 2010-08-26 22:41:24
對於它的價值,我可以用grep 2.5.1在我的OSX終端上重現此行爲。更神祕的是,'$'按預期工作 - 不是'^'。 – 2010-08-26 22:41:32