bash 스크립트 / 또는 명령을 사용하여 아래 출력을 생성하는 방법 :
원하는 출력 :
contacts.USA | Name:John Due | Gender:Male | Age:21 | Address: Texas
contacts.USA | Name:Ed Mundo | Gender:Male | Age:41 | Address: California
contacts.BRAZIL | Name:Tom Paul | Gender:Male | Age:26 | Address: Sau Paulo
입력 예 : diff에 대한 연락처 파일이 100 개 있습니다. 국가.
연락처. 미국
Name:John Due
Gender:Male
Age:21
Address: Texas
Name:Ed Mundo
Gender:Male
Age:41
Address: California
연락처. 브라질
Name:Tom Paul
Gender:Male
Age:26
Address: Sau Paulo
아래의 unix cmd를 사용하고 있지만 원하는 출력을 생성 할 수 없습니다.
grep -E 'Name|Gender|Age|Address' contacts.*
이 cmd의 출력은 결과를 행에 표시합니다.
contacts.USA Name:John Due
contacts.USA Gender:Male
contacts.USA Age:21
contacts.USA Address: Texas
contacts.USA Name:Ed Mundo
contacts.USA Gender:Male
contacts.USA Age:41
contacts.USA Address: California
contacts.BRAZIL Name:Tom Paul
contacts.BRAZIL Gender:Male
contacts.BRAZIL Age:26
contacts.BRAZIL Address: Sau Paulo
awk 솔루션 :
입력 파일 contacts.USA
및 contacts.BRAZIL
.
awk '/Name/{ printf "%s | %s",FILENAME,$0 }
/Gender|Age|Address/{ printf " | %s",$0; if($0~/Address/) print "" }' contacts.*
/Name/{ printf "%s | %s",FILENAME,$0 }
- Name
키워드로 라인 캡처 FILENAME
, 결과 문자열의 시작 부분에 파일 이름 추가
if($0~/Address/) print ""
- Address
키워드 가있는 줄을 만난 후 레코드 구분자 (개행) 인쇄
출력 :
contacts.BRAZIL | Name:Tom Paul | Gender:Male | Age:26 | Address: Sau Paulo
contacts.USA | Name:John Due | Gender:Male | Age:21 | Address: Texas
contacts.USA | Name:Ed Mundo | Gender:Male | Age:41 | Address: California
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다