【发布时间】:2014-12-11 16:14:00
【问题描述】:
我有一个复杂的awk 问题需要解决。
我不确定它是否可以被认为是一个两部分的问题,或者有一种方法可以一步解决它。 t 本质上是一个两部分的问题。
我有一个包含相同格式文件的大目录,每个目录有 266 行。 每个文件的前 206 行都填充了属性信息。 然后下面的 60 行包含 202 个用逗号分隔的值。 这六十行中每一行的第一个位置是一个单词(字符串值),这六十行中每一行的最后一个位置是一个数字(1 或 0)。 是否可以更改包含在单独文件中指示的某些字符串的行的最后一个槽 ($202) 数值?
将问题可视化。 我的数据文件如下所示:
@RELATION relationData
@ATTRIBUTE att0 STRING
@ATTRIBUTE att1 NUMERIC
@ATTRIBUTE att2 NUMERIC
@ATTRIBUTE att3 NUMERIC
....
@ATTRIBUTE att200 NUMERIC
@ATTRIBUTE class {1,0}
@DATA
hall,1,2,3,...,201,0
cat,1,2,3,...,201,1
dog,1,2,3,...,201,1
feather,1,2,3,...,201,1
我有一个包含单词列表的第二个文件(每行 1 个):
cat
feather
我想将第二个文件中包含单词的那些行上的最终数值更改为0,这样我的文件结果是:
@RELATION relationData
@ATTRIBUTE att0 STRING
@ATTRIBUTE att1 NUMERIC
@ATTRIBUTE att2 NUMERIC
@ATTRIBUTE att3 NUMERIC
....
@ATTRIBUTE att200 NUMERIC
@ATTRIBUTE class {1,0}
@DATA
hall,1,2,3,...,201,0
cat,1,2,3,...,201,0
dog,1,2,3,...,201,1
feather,1,2,3,...,201,0
关于如何解决问题的任何建议。 例如,可以这样:
awk -v ip1="$INPUT1" -v ip2="$INPUT2" '{gsub( /String1/, ip1);gsub( /String2/, ip2);print}' file
进行修改以解决我的问题?
提前感谢您的帮助。
【问题讨论】: