프로그램 출력으로 생성된 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 LINELENGTH
fmt 옵션을 사용하십시오.
답변3
Perl의 교체를 사용하여 개행 문자를 제거할 수 있습니다.
perl -ne 's/\n/ /; print if /Variable[15]/'
끝에 개행 문자가 필요한 경우 다음을 추가하세요.
perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'