最初の列に基づいて既存のリストから新しいリストを作成します。

最初の列に基づいて既存のリストから新しいリストを作成します。

次の形式のリストがあります。

group1;visitor1,visitor2,visitor3,
group2;visitor4,visitor5

上記のリストでは、次のようにリストを作成する必要があります。

group1,visitor1
group1,visitor2
group1,visitor3
group2,visitor4
group2,visitor5

ベストアンサー1

これは非常に〜のように配列でAWKを使用するそして他の問題。主なアイデアは、2番目のフィールドから始めて、最初のフィールドの前の別々の行に各フィールドを印刷することです。

この場合、フィールド区切り文字を,or と指定;し、空のフィールドが印刷されないことを確認します(与えられたデータの最初の行の末尾に空のフィールドがあります)。OFSコマンドラインで設定した変数は、-v出力フィールドを区切るために使用される出力区切り文字列で、行内のフィールドのNF数です。

awk -F '[,;]' -v OFS=',' '{ for (i = 2; i <= NF; ++i) if ($i != "") print $1, $i }' file

問題のデータが与えられると、次のものが生成されます。

group1,visitor1
group1,visitor2
group1,visitor3
group2,visitor4
group2,visitor5

おすすめ記事