2012-03-01 13 views
0

I'vは、ローカライズされた文字列のための私のテンプレートシステム(小枝)に入ったことにより、すでに見つかっ何かで引用符の間のテキストは、これらのような項目を取得するは正規表現

find src/ -type f -name '*.twig' -execdir egrep -o -- "\{\{[^|()}{]*\|[(trans) ^}]*\}\}" {} \;

私はこれらのすべてを私のさまざまなテンプレートファイルで見つけることができます。魔女はすでに素晴らしいです。

しかし、もう少し先に進んで、上の例では ""と ""の間にあるものを直接取得したいと思います。検索結果をカスタマイズするか、後で別の検索を実行する方法

PS:私の現在.SHスクリプトは次のとおりです。

old_IFS=$IFS 
IFS=$'\n' 
transFound = 0; 

allUsed=`find src/ -type f -name '*.twig' -execdir egrep -o -- "\{\{[^|(){]*\|[(trans) ^}]*\}\}" {} \;` 
defaultFile="messages.yml" 

for key in $allUsed 
    do 
     echo $key 
     let "transfound++" 
    done 

echo "Found $transfound translations" 
+0

多分私は| sed 'パターン'しかし、どのようにわからない.. – guillaumepotier

答えて

0

私は最終的にそれを見つけた;)のsedを使用する必要がありました:

find src/ -type f -name '*.twig' -execdir egrep -o -- "\{\{ ?['\"][^|()}{]*\|[(trans) ^}]*\}\}" {} \; | sed "s/.*'\(.*\)'[^']*$/\1/" | sed 's/.*"\(.*\)"[^"]*$/\1/' 
0

あなたはperl-P)正規表現を使用することができ、 only-o)プリントアウト一致

$ grep -oP "(['\"]).*\1" input.txt 
"I'd like this quote to be localized" 
"this_is_a_key" 
'another text' 
"ohter" 
'no_spaces' 

-o, --only-matching 
      Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. 

    -P, --perl-regexp 
      Interpret PATTERN as a Perl regular expression (PCRE, see below). This is highly experimental and grep -P may warn of unimplemented 
      features.