2011-04-14 9 views
0
Input: [[target|visible]] 
Output: visible 

링크 내 시도입니다 :나오지 스크립트는 여기

's:\[\[\[^\|]*|\(.*\)]]:\1:g' 

(가독성을위한 unesacped 및 간격 :

's: [[ [^\|]* | (.*) ]]:\1:g' 

)

그러나 그것은 작동하지 않습니다.

편집 :이 작업에 대한 더 적합,

's:\[\[[^]\|]*\|\([^]]*\)]]:\1:g' 

답변

0

당신은 sed -r와 정규 표현식을 확장 사용할 수 있습니다

echo '[[target|visible]]' | sed -r 's:^\[\[[^\|]*\|(.*)\]\]$:\1:' 

나는 기본 regexps '에와 | 일치하는 방법을 찾을 수 없습니다 ...

0

해보십시오 AWK : 그것을 해결. "|"로 분할 그리고 두 번째 필드를 얻습니다. 그처럼 간단합니다. 쉽게 문자열의 분할을 수행 원하는

$ echo "[[target|visible]]" | awk -F'|' '{gsub(/\]/,"",$2);print $2}' 
visible 

또는 도구와 같은 그 ]를 제거합니다. 예를 들어 루비 (1.9+)

$ echo "[[target|visible]]" | ruby -e 'puts gets.split("|")[-1].gsub(/\]/,"")' 
visible 
+0

'AWK를 '이 실행되는 시스템에서는 사용할 수 없습니다. – Hurk