2011-09-06 4 views
0

Linux의 텍스트 파일에 다음 유형의 텍스트 패턴이 있습니다. 나는이 본문의 마지막 부분만을 얻을 필요가있다. 어떻게해야합니까?다음과 같은 출력을 얻으려면 Linux 명령은 무엇입니까?

tmk.mfg.pref.ZPreferes::getKey 
com.sun.star.uno.SCompentCont::getSage 
com.sun.star.lang.XMultiComponentFactory::createInstanceWithContext 

나는 사람이 어떻게 잘라내거나 다른 명령으로 얻는 방법을 말해 줄래 각 라인 즉하는 getKey, getSage 등의 마지막 부분이 필요합니다. 미리 감사드립니다. cut

+2

당신은 허용되지 않습니다 모두 10 개 질문을 가지고있다. 그들 –

답변

0

하나 라이너 bash는 스크립트를

for line in $(cat test); do echo ${line//*::}; done 
+0

줄에 공백이 없다고 가정합니다. – Teddy

1

파이프를 : [...] | cut -d: -f3

+0

돌봐 줄 텍스트의 첫 번째 부분을 제공합니다 즉 위의 경우 tmk.mfg.pref.ZPreferes, com.sun.star.uno.SCompentCont .. 다른 솔루션을 말해 줄 수 있습니까? – Prajkata

+0

그게 첫 번째 필드를 반환합니다.이 인스턴스는 tmk.mfg.pref.ZPreferes 등입니다. 나는'-f3'을 의미한다고 생각합니다. – beny23

+0

@ beny23 : D' oh, typo ... Prajkata : 그것에 대해 미안 해요, 작동해야합니다. now – carlpett

2

나는 당신이 스택 오버 플로우에 게시되기 때문에 이것에 대한 bash는 스크립트를 프로그래밍 할 것으로 생각한다. 당연히 당신은 결코 더 적은 것이 아직도 1 개의 강선을 얻지 않을 것이다.

나는 그렙

내가 사용하고있는 정규 표현식이 당신의 필요에 맞게 변경 ++ 자바/C/C의 표준 식별자입니다
grep -o -e "[a-zA-Z][a-zA-Z0-9_]*$" TEXTFILE.TXT 

이 주를 사용하는 것입니다.

+0

식별자에 밑줄이 없습니까? –

+0

물론, 잊어 버렸습니다 :) 지금 고정 – daramarak

0
while read line; do 
    echo "${line##*:}" # removes everything up to and including the last colon 
done < input.file 
내가 제안
+0

당신은 ##을 의미하지 않습니다 %% – Teddy

+0

맞아요, 고마워. –

1

중 하나 sed :

sed --expression='s/.*://' 

또는 awk :

awk -F: '{ print $NF }' 

또는 명시 적으로 세 번째 콜론으로 구분 된 필드를 원하는 경우 (대신 마지막 필드) :

awk -F: '{ print $3 }' 

또는, 당신은 단지 bash 내장 명령을 사용하려면 :

while read line; do echo "${line##*:}"; done 
관련 문제