复制线条并使它们独一无二?

Ran*_*y V 2 text-processing regular-expression csv text

我有以下文本行结构:

3923 001    L05 LV,L05 RM
3923 002    L12 RA,L12 LA
3923 003    I06 ALL
3923 004    G04 RV,Z09 ALL
Run Code Online (Sandbox Code Playgroud)

但我需要这个:

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
Run Code Online (Sandbox Code Playgroud)

这可以用正则表达式吗?

基本上,我需要将每一行复制包含“,”的次数,然后从第 10 个字符开始制作唯一的;如果我能完成第一部分,那么只需复制每一行 x 逗号的数量,我就可以手动清理其余部分

123*_*123 7

鉴于您的示例的格式,这应该适用于初始大空格后的任意数量的逗号分隔字符串(如果它是制表符,只需将第二个中的空格更改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
Run Code Online (Sandbox Code Playgroud)

如果你想要标签,那么

如果你想把 tab 写成 \t,你可以用 $'' 引号把它给 Bash: sed $':;h;s/,.*//;p;x;s/\t[^,] *,//;t;d'。或者只是插入一个文字选项卡(对于 bash,您需要键入 control-v 以逐字输入)。.

托比·斯佩特