다음 형식의 기호 테이블(키 값 쌍)이 있습니다.
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)