다음 스크립트 출력이 있습니다
host1:101
host1:102
host2:101
host2:102
host2:103
host4:101
host5:101
host5:102
host5:103
host5:104
등..
각 호스트 그룹 뒤에 새 행을 삽입하고 싶습니다.
host1:101
host1:102
host2:101
host2:102
host3:101
host3:102
각 연속 행을 첫 번째 필드와 비교하고 일치하지 않는 첫 번째 필드 앞에 새 행을 삽입하는 온라인 AWK 사용자가 있습니까?
답변1
awk -F: '{if (NR>1 && save!=$1) print "";} {save=$1; print;}'
행 1 앞에 빈 행을 삽입하고 싶지 않으므로 가 아니면 그것에 대해 생각조차 하지 마십시오 NR>1
. 이후 첫 번째 필드가 이전 행에 저장된 값이 아닌 경우 빈 행이 인쇄됩니다.
답변2
다른 awk
:
awk -F: 'a!~$1{print x}a=$1' file
출력의 첫 번째 빈 줄을 제거합니다.
awk -F: 'a&&a!~$1{print x}a=$1' file
답변3
또 다른 awk 방법:
awk -F ':' '!a[$1]++ && NR>1{print ""}1' file
답변4
다른 awk
:
$ awk -F':' 'FNR > 1 && p != $1 {printf "\n"};{p = $1}1' file
host1:101
host1:102
host2:101
host2:102
host2:103
host4:101
host5:101
host5:102
host5:103
host5:104