線を繰り返してユニークにしますか?

線を繰り返してユニークにしますか?

次のテキスト行構造があります。

3923 001    L05 LV,L05 RM
3923 002    L12 RA,L12 LA
3923 003    I06 ALL
3923 004    G04 RV,Z09 ALL

しかし、私にはこれが必要です:

3923 001    L05 LV
3923 001    L05 RM
3923 002    L12 RA
3923 002    L12 LA
3923 003    I06 ALL
3923 004    G04 RV
3923 004    Z09 ALL

正規表現を使用してこれを達成できますか?

デフォルトでは、各行に「、」を含む回数だけコピーしてから、10文字目から始めて一意にする必要があります。最初の部分を実行できる場合は、各行のコピー数×数字のみを使用してください。残りは手動でクリーンアップできます。

ベストアンサー1

例の形式を考慮すると、最初の大きなスペースの後にあるカンマ区切り文字列の数に関係なく機能します(タブの場合は、2番目のスペースを次のようs///に変更します)。\t

sed ':;h;s/,.*//;p;x;s/    [^,]*,/    /;t;d' file

3923 001    L05 LV
3923 001    L05 RM
3923 002    L12 RA
3923 002    L12 LA
3923 003    I06 ALL
3923 004    G04 RV
3923 004    Z09 ALL

ラベルが必要な場合

タブ文字を \t で書きたい場合は、引用符 $'' を使用して Bash に指定できます: sed $':;h;s/,.*//;p;x;s/\t[^ , ] *, / /; t; d '。または、単にリテラルタブを挿入します(Bashの場合は、文字通り入力するにはcontrol-vと入力する必要があります)。 。

トビースペート

おすすめ記事