다음 줄을 얻는다고 가정 해 봅시다.
[duration] => 92
[from] => 18884541236
[to] => 17841234568
내가 원하는 것은 전체 파일을 검색하여 [Sender] 번호가 [Recipient] 번호와 동일한 인스턴스를 확인하는 것입니다.
그래서 다음과 같은 항목이 있다면
[duration] => 43
[from] => 17873332222
[to] => 17873332222
다음 줄에서 [from] 번호 바로 뒤에 동일한 [to] 번호가 오는 위치를 파일에서 검색할 수 있습니다.
답변1
[to]
이 명령은 줄 번호와 첫 번째 필드가 있고 세 번째 필드가 가장 최근에 표시된 값과 동일한 줄의 내용을 인쇄합니다 [from]
.
awk '{ if($1=="[from]"){from=$3} } $1=="[to]" && $3==from{print NR,$0}' file
이 파일을 입력으로 사용하십시오.
[duration] => 92
[from] => 18884541236
[to] => 17841234568
[duration] => 43
[from] => 17873332222
[to] => 17873332222
다음과 같은 결과가 나타납니다.
$ awk '{ if($1=="[from]"){from=$3} } $1=="[to]" && $3==from{print NR,$0}' file
6 [to] => 17873332222
답변2
샘플로 보니까 (위험한 건 알겠는데)
[duration]
결코 동일하지 [from]
않고 [to]
항상 준수된다면 이것은 간단할 수 있습니다.
awk '$3==last{ print NR, $0} {last=$3}' file