用于从原始文本文件

时间:2015-06-20 15:33:26

标签: linux r sed

我有一个以逗号分隔的文本文件,其中一个变量的格式不是很好,因为它本身包含逗号(变量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

任何建议都将不胜感激

1 个答案:

答案 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研究。