2010-06-18 4 views
4

에서 특정 필드 값을 추출하는 GREP을 사용하여 내가 .... 다른 필드의 변수 수를 나타냅니다 다음나는 선

....... DisplayName="john" .......... 

과 같이 파일의 줄이있다.

다음 grep 명령을 사용하여, 나는 그러나 유효한 '표시 이름'필드

grep DisplayName="[0-9A-Za-z[:space:]]*" e:\test 

이 모든 라인을 추출 할 수 있어요, 나는 각에서 (즉, "존") 이름 만 추출 할 grep에 의해 반환되는 전체 줄 대신 줄을 사용하십시오. cut 명령에 대한 출력 파이프 라인을 시도했지만 문자열 구분 기호를 사용할 수 없습니다. 특히

답변

3

:

sed 's/.*DisplayName="\(.*\)".*/\1/' 

이해야 할이 나오지 의미는 S/subsitutethis/"/"구분자가있는 곳입니다 forthis /. 이스케이프 처리 된 괄호와 이스케이프 처리 된 괄호는 괄호로 묶인 패턴 부분을 유지하는 데 사용됩니다. 이 표현식은 displayname 뒤에 모든 것을 괄호 안에 넣고 나머지는 버립니다.

사용하는 경우에도 먼저 GREP을 사용하지 않고 작업 할 수 있습니다

sed -n 's/.*DisplayName="\(.*\)".*/\1/p' 

-n 옵션 및 P 플래그는 단지 변경된 라인을 인쇄 나오지도 알려줍니다.

는에서

더 : http://www.grymoire.com/Unix/Sed.html

3

이 나를 위해 작동합니다

awk -F "=" '/DisplayName/ {print $2}' 

"john"을 반환합니다. john의 인용문을 제거하려면 다음을 사용하십시오.

awk -F "=" '/DisplayName/ {gsub("\"","");print $2}'