2013-04-23 79 views
2

我試圖通過正則表達式匹配特定字符的所有位置。我可以用expr索引這樣做,但這隻匹配字符串中的第一個字符。匹配bash中所有匹配字符的位置與正則表達式

echo $(expr index "$z" '[\x1F\x7F-\x9F]') 

注:$ z是包含字符串

了var這個(正確)返回:

6 

我知道在這個字符串我有在位置兩個匹配的字符6和12,我想要返回匹配字符的所有位置,不僅是第一個。

你能幫助我嗎? 謝謝!

+1

我敢肯定,'EXPR index'並不需要一個正則表達式作爲第二個參數,但我很想是錯誤的。 – 2013-04-23 15:48:52

回答

2

這是一個使用awk的命令。它打印出所有符合正則表達式的位置/0-9/

echo $z | awk '{s=$0; i=1; idx=0; 
     while(i>0){ 
      i=match(s, /[0-9]/); 
      if(i>0) { 
        idx += i; 
        print idx; 
        s=substr(s, i+1); 
      } 
     } 
}'