같은 줄에 데이터 인쇄 [닫기]

같은 줄에 데이터 인쇄 [닫기]

다음 명령을 사용하여 파일에서 두 단어를 검색합니다 grep.

grep  "ADDR|USCDB"  VLR.txt |awk -F" " '{print $3 " " $4}' > prueba.txt

출력은 다음과 같습니다

2021-03-12 14:27:15
RESULT=VLR, ADDR="573025000022";%%
2021-03-12 14:27:15
RESULT=VLR, ADDR="573025000023";%%
2021-03-12 14:27:15
RESULT=VLR, ADDR="573025000024";%%

내가 달성하고 싶은 것은 날짜와 결과를 같은 줄에 표시하는 것입니다.

2021-03-12 14:27:15 RESULT=VLR, ADDR="573025000022";%%
2021-03-12 14:27:15 RESULT=VLR, ADDR="573025000023";%%
2021-03-12 14:27:15 RESULT=VLR, ADDR="573025000024";%%

답변1

USCDB각 줄 앞에는 항상 다음이 붙는다고 가정합니다 ADDR.

awk '$2 == "USCDB" { date = $3 " " $4 } $4 ~ /^ADDR=/ { print date, $3, $4 }' input

date행이 발견될 때마다 USCDB변수에 날짜가 저장됩니다 . 행이 발견 되면 ADDR이 값이 필드 3 및 4와 함께 출력됩니다.

ADDRUSCDB또한 두 문자열을 일치시키고 전체 행에서 일치시키는 것보다 특정 필드에서만 일치시키는 것에 대해 더 엄격합니다 .

테스트할 데이터가 없기 때문에 코드는 테스트되지 않았습니다(스크린샷이 있었지만 지금은 없어졌습니다).

답변2

출력에 레코드 구분 기호를 할당할 수 있으며 ORS이는 각 인쇄 문에 암시적으로 추가됩니다.

grep .... |
awk '{
  ORS = ORS == "\n" ? "" : "\n"
  print $3, $4
}'

이 방법은 두 개의 데이터 라인이 차례로 쌍을 이루기 때문에 작동합니다. 따라서 첫 번째 부분에서는 ORS를 공백으로 설정하고 두 번째 부분은 개행으로 설정했습니다. 쉼표는 세 번째 필드와 네 번째 필드를 구분하는 역할을 합니다.

관련 정보