我有一个以逗号分隔的文本文件,其中一个变量的格式不是很好,因为它本身包含逗号(变量2,下面的示例)
我希望我可以使用系统命令整理文件,删除每行上出现的“###”之前变量的内容(不影响相关变量之前的变量)< / p>
当前格式:
variable1 variable2 variable3 variable4 variable5 variable6
1 aaa 1 1 Milcek K1 2D Milcek###Bel Ami
1 bbb 2 2 Milcek K1 2D Milcek###Bel Ami
2 aaa 3 3 Koupili jsme zoo K1 2D Koupili jsme Zoo###We Bought a Zoo
2 bbb 4 4 Koupili jsme zoo K1 2D Koupili jsme Zoo###We Bought a Zoo
3 aaa 5 5 Koupili jsme zoo K1 2D Koupili jsme Zoo###We Bought a Zoo
4 bbb 6 6 Titanic 3D K1 Titanic###Titanic
5 aaa 7 7 Snehurka K1 2D Snehurka###Mirror Mirror
5 bbb 8 8 Snehurka K1 2D Snehurka###Mirror Mirror
5 aaa 9 9 Snehurka K1 2D Snehurka###Mirror Mirror
任何建议都将不胜感激
答案 0 :(得分:0)
首先让重新格式化文件,因为空间也包含在字段中。使用一些未使用的符号替换多于2个空格,对于CSV,(可以根据需要更改)
sed -r 's/ +/,/g' file
然后进行替换
sed -r 's/,[^,]*###/,/' file
最后替换,假设10个空格
sed 's/,/ /g'
或将所有这些与管道放在一起
sed -r 's/ +/,/g' file | sed -r 's/,[^,]*###/,/' | sed 's/,/ /g' > output
从提供的输入看来,最好是避免最后一步并离开,分开字段。或者使用带有printf函数的awk以获得更好的格式(由一些awk专家提供),甚至可以尝试使用awk研究。