次の入力CSVファイルがあります。
john,Hello my name
john,is John
katie,Whereas my
katie,name is Katie
bob,And I am Bob.
ファイルは、名前(最初の列)が連続し、テキスト(2番目の列)が論理的な順序になるようにソートされます。
最初の列を「グループ化」(SQL用語を使用)し、2番目の列を結合する標準化された方法はありますか?
私が望む出力は次のとおりです。
john,Hello my name is John
katie,Whereas my name is Katie
bob,And I am Bob.
ベストアンサー1
各ブロックの長さに関する詳細な知識によって、関数のENDブロックをコピーする必要がある境界条件の小さな複雑さを処理する必要はありません。
私はこのアプローチを擁護するのではなく、Gilesが受け入れた答えを支持することです。複雑な問題を処理するときに、複雑さ(I / Oとメモリを犠牲にして)を大幅に減らすことができる代替アプローチを示すために、この問題を提起しました(これはその1つではありません)。
a
名前 インデックスブロック長の配列です。n
ブロックに残っている行数。
awk -F, '
FNR==NR {a[$1]++; next}
n {print " "$2}
!n {print; n=a[$1]}
!--n {print "\n"}
' ORS= data data