如何在csv行的某个位置插入一个字符

时间:2012-12-07 07:52:51

标签: bash csv

我应该如何在csv行的特定点插入字符?例如,如果我有以下内容:

1,2,3,4,5,6,7

我如何在5(第五个字段)所在的位置插入,,,,,,所以它看起来像

1,2,3,4,,,,,,5,6,7

我找到了一个如何为java做这个的链接,但不幸的是我没有太多的运气找到如何用bash做到这一点。非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用awk更改特定字段:

awk -F"," '{OFS=","; a=$5; $5=",,,,,",a; print $0}' file

我们的想法是用所需的值更新字段5,然后打印整行。


 echo "1,2,3,4,5,6,7" | awk -F"," '{a=$5; $5=",,,,,"a; OFS=","; print}'

会打印:

1,2,3,4,,,,,,5,6,7

答案 1 :(得分:1)

awk -F, 'BEGIN{OFS=","}{$5=",,,,,"$5;print}' your_file

测试如下:

> echo "1,2,3,4,5,6" | awk -F, 'BEGIN{OFS=","}{$5=",,,,,"$5;print}'
1,2,3,4,,,,,,5,6
> 

或者您可以使用perl:

> echo "1,2,3,4,5,6" | perl -F, -lane '$F[4]=~s/^/,,,,,/g;print join(",",@F)'
1,2,3,4,,,,,,5,6
>