2014-09-26 46 views
-1


我正在写一个脚本来修改CSV文件替换字符串指定列。 这是我的格式文件:使用awk

“ID”, “类型”, “日期”, “放”, “版本”
“1”, “安全更新”, “2014年9月23日”, “1.3-0.1”,“2”
“2”“Bug修复”“2014-09-23”“1.3-0.1”“2”
“3”“增强”“2014- 09-23" ,‘1.3-0.1’,‘2’

我想改变‘安全更新’为‘高’,‘修正错误’,以‘中’和‘增强’来“普通”

没有人给我一个想法?
谢谢

+0

你应该为此使用awk。阅读教程。 – 2014-09-26 02:25:15

回答

0

这会在整个文件中用您想要的替换替换关键字的每个实例。

awk '{gsub(/Security Update/,"High")}; 1' 
awk '{gsub(/Bug Fix/,"Medium")}; 1' 
awk '{gsub(/Enhancement/,"Normal")}; 1' 

但请注意,即使它们不在第二列,它也会与关键字匹配。

0

鉴于此示例文件:

"id","type","date","release","version" 
"1","Security Update","2014-09-23","1.3-0.1","2" 
"2","Bug Fix","2014-09-23","1.3-0.1","2" 
"3","Enhancement","2014-09-23","1.3-0.1","2" 

这是很容易在使用Python改变:

$ python -c ' 
import csv, fileinput 
update={"Security Update": "High", "Bug Fix": "Medium", "Enhancement":"Normal"} 
for line in csv.reader(fileinput.input()): 
    if line[1] in update: line[1]=update[line[1]] 
    print ",".join(repr(e) for e in line)' file.csv 
'id','type','date','release','version' 
'1','High','2014-09-23','1.3-0.1','2' 
'2','Medium','2014-09-23','1.3-0.1','2' 
'3','Normal','2014-09-23','1.3-0.1','2' 
0

用sed可以做到这一点。

sed 's/Security Update/High/g;s/Bug Fix/Medium/g;s/Enhancement/Normal/g'