文本处理:awk,sed:更改一个数字后跟一个字符

时间:2013-08-06 16:08:30

标签: sed awk grep

我有一个包含100多个节点的点文件,例如

n12 -> n23
n14 -> n35

如果'n'之后的数字大于20,我想在节点标签中将数字增加1。 所以上面的两行将成为:

n12 -> n24
n14 -> n36

使用awk,sed或其他任何东西做这件事的好方法是什么?

(我不能使用'cut'删除'n'并比较数字,因为这样会删除'n'的某些属性。)

谢谢!

1 个答案:

答案 0 :(得分:3)

Perl解决方案:

perl -pe 's/([0-9]+)/$1 > 20 ? $1 + 1 : $1/ge' INPUT_FILE

要更改输入文件,请添加-i~选项。