所以我有一个大的CSV文件(在Gb中),我有多个列,前两列是:
Invoice number|Line Item Number
我想要一个unix / linux / ubuntu命令,它可以合并这两列并创建一个由分隔符':'分隔的新列,所以例如:如果发票号是64789544,行项目号是234533,那么我的合并值应为
64789544:234533
是否真的可以实现,如果是,可以将合并列添加回源csv文件。
答案 0 :(得分:0)
您可以使用以下sed
命令:
$ cat large.csv
Invoice number|Line Item Number|Other1|Other2
64789544|234533|abc|134
64744123|232523|cde|awc
$ sed -i.bak 's/^\([^|]*\)|\([^|]*\)/\1:\2/' large.csv
$ cat large.csv
Invoice number:Line Item Number|Other1|Other2
64789544:234533|abc|134
64744123:232523|cde|awc
请注意,它会备份您的输入文件以防万一,因此您需要在文件系统中留出足够的空间。
<强>说明:强>
s/^\([^|]*\)|\([^|]*\)/\1:\2/
此命令将替换由|
分隔的CSV的前两个字段,并将:
使用后引用替换分隔符,这将合并2列。如果您确定自己在做什么,可以更改-i.bak
中的-i
以避免备份CSV文件。
答案 1 :(得分:0)
也许这个简单的sed
sed 's/|/:/' infile