두 쌍으로 구성된 두 항목 테이블을 구문 분석해야 합니다.

두 쌍으로 구성된 두 항목 테이블을 구문 분석해야 합니다.

프로그램 출력으로 생성된 2개 항목 테이블이 있습니다.

Variable1  : Value1  
Variable2  : Value2  
Variable3  : Value3  
Variable4  : Value4  
Variable5  : Value5  
Variable6  : Value6  
Variable7  : Value7 

첫 번째와 다섯 번째 쌍을 추출해야 합니다. 이는 grep을 사용하여 수행하는 작업입니다.

$ {program command} | grep -e Variable1 -e Variable5

다음과 같은 출력이 생성됩니다.

Variable1  : Value1  
Variable5  : Value5  

여기서 문제는 두 쌍이 필요하다는 것입니다동일한그러나 grep -e 명령은 각 -e 다음에 LF/CR을 인쇄합니다. 파일 크기를 기준으로 최종 정렬하려면 같은 줄에 4개의 쌍이 필요합니다. 나는 동일한 명령줄에서 awk나 Perl을 사용하여 이 작업을 수행할 수 있다고 생각하지만 아쉽게도 나는 여전히 그것들을 처음 접합니다.

어떤 아이디어가 있나요? 미리 감사드립니다.

답변1

줄만 연결하려면 tr개행 제거를 사용하세요.

$ {program command} | grep -e Variable1 -e Variable5 | tr -d '\n'

모든 것을 완료하세요 awk:

$ {program command} | awk '/Variable[15]/ { printf("%s ", $0) }'

다음과 동일 sed:

$ {program command} | sed -n '/Variable[15]/H; $ { x; s/\n/ /g; p }'

답변2

grep에서 두 줄을 연결하려는 경우 가장 쉬운 방법은 파이프를 사용하는 것입니다 fmt.

$ {program command} | grep -e Variable1 -e Variable5 | fmt

행이 너무 길면 -w LINELENGTHfmt 옵션을 사용하십시오.

답변3

Perl의 교체를 사용하여 개행 문자를 제거할 수 있습니다.

perl -ne 's/\n/ /; print if /Variable[15]/'

끝에 개행 문자가 필요한 경우 다음을 추가하세요.

perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'

관련 정보