我想转换
Title Page/4,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
Contents/16,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
到
Title Page 1/4,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
Contents 13/16,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
规则是将/
后面的数字减去3并将结果添加到/
前面。
我尝试使用awk
。
awk -F',/' '{gsub(/\//, ($2-10) + "\/"}' myfile
但它不起作用。为什么?感谢。
答案 0 :(得分:2)
对您的尝试稍作修改会产生所需的输出:
$ awk -F'[,/]' '{sub(/\//, " " ($2-3) "/") }1' file
Title Page 1/4,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
Contents 13/16,Black,notBold,notItalic,open,TopLeftZoom,0,0,0.0
-F
用于指定输入字段分隔符。我已将其更改为与逗号和斜杠匹配的正则表达式组,这意味着第二个字段$2
包含您要替换的数字。由于您只对每条记录中的单个替换感兴趣,因此我使用了sub
而不是gsub
。请注意,在awk中,字符串会自动连接(您不应使用+
)。
awk程序像condition { action }
那样被结构化。如果未指定条件,则始终运行操作块。如果未指定任何操作,则默认操作为{ print }
,用于打印记录。在上面的脚本中,1
用于打印记录,因为它是评估为true的最简单的表达式。