2013-04-22 4 views
0

'[ ]' 사이의 내용을 추출하고 셸 스크립트를 사용하여 비교하는 데 어려움이 많습니다. 그 후 []으로 다른 필드를 지울 필요가 있습니다.구분 기호 사이에 내용 저장 및 비교

파일 이름이 [xxxx] 인 파일을 받았는데 그 중 하나가 유용하고 그 파일을 분류하는 데 사용됩니다.

한 예 :

Input: sample[t.225][lb.445][21042013][0913605].extension 
Output (pattern lb.445): sample[lb.445].extension 

내가 패턴으로 그렙을 사용할 수 있습니다 알고 있지만 그 후 나는이 파일 이름에 다른 필드를 삭제하는 방법을 모르겠어요. 나는 grep을 사용하는 전략이 최상의 선택이 아니며, 쉘 스크립트와 패턴 비교에서 루프 사운드를 사용하는 것이 정말 이상하다고 생각한다.

+0

당신의 "패턴"

awk -F'[][]' '{print $1"["$4"]"$NF}' input 

위의 라인이

이 문제의 예를 들자면 2 [...] 블록에서 텍스트를한다 샘플과 마찬가지로 매번 두 번째 [...]입니까? – jm666

+0

아니요, 패턴이 세 번째 또는 다른 위치에있는 경우가 있습니다. –

+0

그래서 패턴을 식별하는 방법은 무엇입니까? 그것은 파운드로 시작됩니까? 또는? 일치하는 요구 사항을 완전히 설명해보십시오.) – jm666

답변

1

AWK이 경우에 도움이 될 수

kent$ echo "sample[t.225][lb.445][21042013][0913605].extension"|awk -F'[][]' '{print $1"["$4"]"$NF}'                  
sample[lb.445].extension 
+0

하지만 패턴이 항상 두 번째 위치에 있지는 않습니다. –

+0

그래서 필요한 부분은 어디에 있겠지만 텍스트는'lb.445' 여야합니까? 추출 할 기준은 무엇입니까? – Kent

+0

기준은 []에 lb.xxx입니다. –

관련 문제