처음 두 필드의 데이터를 다음과 같이 그룹화하고 싶습니다.
견본:
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 ',' '|'
입력에 쉼표 문자가 없으면 이전 버전을 사용할 수 있습니다.