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 逗号的数量,我就可以手动清理其余部分
鉴于您的示例的格式,这应该适用于初始大空格后的任意数量的逗号分隔字符串(如果它是制表符,只需将第二个中的空格更改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 以逐字输入)。.
—托比·斯佩特