各列に固有の値を保持します(カンマで区切られます)。

各列に固有の値を保持します(カンマで区切られます)。

.tsvLinuxシステムには、さまざまなタイプ(文字列、数字)のカンマ区切り値を含む次の列を含む(タブ区切り列)ファイルがあります。

col1    col2    
.       NS,NS,NS,true,true      
.       12,12,12,13 
1,1,1,2 door,door,1,1   

独自の価値を維持したいと思います(残念ながら試しましたが失敗しました)。出力は次のとおりです。

col1 col2   
.    NS,true        
.    12,13  
1,2  door,1 

ベストアンサー1

これは、値文字列を整数インデックスマップに分割して結合するMillerバリアントです。カンマ区切り文字列に戻る):

mlr --tsv put 'for (k,v in $*) {
  $[k] =  joink(apply(splitnvx(v,","), func(k,v) {return{v:k}}),",")
}' file.tsv

またはperl5の助けを借りてリスト::ユーティリティ基準寸法:

perl -MList::Util=uniq -F'\t' -lpe '
  $_ = join "\t", map { join ",", uniq split /,/, $_ } @F
' file.tsv

おすすめ記事