처음 두 열에서 일치하는 데이터를 그룹화하는 방법

처음 두 열에서 일치하는 데이터를 그룹화하는 방법

처음 두 필드의 데이터를 다음과 같이 그룹화하고 싶습니다.

견본:

CHECK|checkadm|block1
CHECK|checkadm|block2
CHECK|checkadm|block3
CHECK|checkadm|block4
TEST|testadm|block1
TEST|testadm|block2
TEST|testadm|block3

최종 출력

CHECK|checkadm|block1|block2|block3|block4
TEST|testadm|block1|block2|block3

답변1

어떻게 해야 할까요?대량으로각 줄의 연결:

awk '
    BEGIN{FS="|"; OFS=""}
    {a[$1"|"$2]=a[$1"|"$2]"|"$NF}
    END{for (i in a) print i, a[i]}
' file

TEST|testadm|block1|block2|block3
CHECK|checkadm|block1|block2|block3|block4

답변2

그리고GNU 데이터 혼합버전 1.8(입력이 이미 질문의 예와 같이 정렬되어 있다고 가정):

$ datamash -t'|' --collapse-delimiter='|' -g1,2 collapse 3 <ip.txt
CHECK|checkadm|block1|block2|block3|block4
TEST|testadm|block1|block2|block3

datamash -t'|' -g1,2 collapse 3 <ip.txt | tr ',' '|'입력에 쉼표 문자가 없으면 이전 버전을 사용할 수 있습니다.

관련 정보