2015-01-28 7 views
-1

문자열과 관련된 값을 추출하려고하지만 최적의 방법이 필요합니다.파일에서 문자열을 일치시키고 sed 또는 awk를 사용하여 전체 값을 인쇄하십시오.

name=sandeep login_name=sn003 version=3.0 rel_no=456.... 

위의 텍스트는 파일에 저장됩니다.
문자열의 일부를 검색하고 전체 값을 인쇄하려고합니다.

내가 login를 사용하여 검색 할 필요가 출력이 login_name이 비록 인쇄되지 않습니다 두 번째 필드가 아닌 경우 내가 명령을

cat filename | awk -F" " '{print $2}' 

을 시도

login_name=sn003 

해야 말.
어떤 위치에서 문자열을 검색 한 다음 결과를 인쇄하려면 어떻게해야합니까?

미리 감사드립니다. 당신은 GREP를 사용할 수

+0

[GREP, REGEX 또는 PERL을 사용하여 패턴을 따르는 문자열을 추출하는 방법] (http://stackoverflow.com/questions/5080988/how-to-extract-string-following-a-pattern-with-grep- regex-perl) – tripleee

답변

2

,

$ echo 'name=sandeep login_name=sn003 version=3.0 rel_no=456.....' | grep -o '[^ ]*login[^ ]*' 
login_name=sn003 

[^ ]*는하지만 공간, 0 번 이상의 모든 문자와 일치합니다.

또는 sed를 통해

,

$ echo 'name=sandeep login_name=sn003 version=3.0 rel_no=456.....' | sed 's/.*\([^ ]*login[^ ]*\).*/\1/' 
login_name=sn003 

또는 AWK를 통해

,

$ echo 'name=sandeep login_name=sn003 version=3.0 rel_no=456.....' | awk '{for(i=1;i<=NF;i++){if($i~/login/){print $i}}}' 
login_name=sn003 
+0

명확한 설명에 감사드립니다. :) –

0

사용 펄 :

perl -lne 'print $1 if(/(login[\S]+\s).*/)' 
관련 문제