키에 해당하는 단어를 한 줄에 입력하세요.

키에 해당하는 단어를 한 줄에 입력하세요.

다음 형식의 기호 테이블(키 값 쌍)이 있습니다.

01  aaluu desii
01  aaluu cipsa 
01  amaruuda ilaahabaadii
02  hai
02  nahii
02  txamaatxara

먼저 (같은 키에 해당하는) 단어를 같은 줄에 넣어야 합니다.

예상 출력은 다음과 같습니다.

01 aaluu desii aaluu cipsa amaruuda ilaahabaadii
02 hai nahii txamaatxara

입력 파일과 출력 파일에는 키와 값을 구분하는 탭 문자가 있다는 점에 유의하세요.

답변1

awk를 사용하세요:

 awk '{for (i=2; i<=NF; i++) {a[$1]=a[$1]" "$i}} END{for ( i in a){print i"\t"a[i]}}'

a인덱스(키)가 있는 배열을 만들고 행의 $1첫 번째 필드를 제외한 모든 필드를 배열에 추가합니다. 이는 유사한 키를 가진 모든 행에 대해 이 작업을 수행합니다.

END배열 인덱스를 반복하고 a키와 값 사이에 탭 구분 기호를 사용하여 배열 인덱스(키)와 배열 내용(값)을 인쇄합니다.

답변2

sed '
    :1                                  #just mark
    N                                   #append next line
    s/^\(\([0-9]\+\s\+\).*\)\n\2/\1 /   #compare nums in the line beginning
    t1                                  #if prev succeed return to mark
    P                                   #print before \newline
    D                                   #delete before \newline, go to start
' <(sort -k1n table.file)

관련 정보