我有一个数据如下的文件:
1,2,3 4,5,6 7,8,9 12,22,0
我要创建一个包含4列的表的4列,比如说a,b,c,d
,该列a
具有第1列的值,该列具有第2列的b
对应值,依此类推。
在上面的示例中,列将如下所示:
a b c d
1 4 7 12
2 5 8 22
3 6 9 0
也没有。特定行的列中的条目数将相同。但是,对于不同的行,这些条目可能会有所不同,例如,某些行的每一列只能有一个逗号分隔的条目,有些甚至可以有10个。
尚不清楚您希望如何命名这些列(用户输入,要使用的每个列的预定义名称或其他方式)。
只需将字符串拆分为列,您可以使用sed
:
echo 1,2,3 4,5,6 7,8,9 12,22,0 | sed -n 'h;:a;g;s/,[^ ]*//gp;g;s/^[^, ]*,//;s/ [^,]*,/ /g;h;ta;p'
此处将sed
整个字符串复制到缓冲区(h
),在循环(:a
.. ta
)中遍历一行,从缓冲区(g
)获取复制的字符串,从每个部分获取第一个数字(first ),然后s
打印它(p
),然后再次检索未触动的字符串,从其中删除第一个数字(第二个和第三个s
),然后将修改后的字符串放回缓冲区(h
)。当我们有,
字符串时,这继续进行。一旦它消失了,我们就打印剩下的任何东西p
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句