如何使用bash搜索和替换文件中的多个数字序列

时间:2015-06-19 17:58:56

标签: bash

我有一个包含许多这样的行的文件:

dog:7066469:182:0:0:7050964:7087402:7058396:7079290:7087537
cat:7066469:182:0:0:7050964:7087402:7058396
dog:7066469:182:0:0:7050964:7087402:7058396:7079290

使用bash编程(sed或awk或其他东西),如何在第5个“:”之后的每个数字前面添加6,只有以“cat:”开头的行? 正确的结果是:

dog:7066469:182:0:0:7050964:7087402:7058396:7079290:7087537
cat:7066469:182:0:0:67050964:67087402:67058396
dog:7066469:182:0:0:7050964:7087402:7058396:7079290

1 个答案:

答案 0 :(得分:5)

使用awk:

awk 'BEGIN{FS=OFS=":"} $1=="cat"{for (i=6; i<=NF; i++) $i = "6" $i} 1' file
dog:7066469:182:0:0:7050964:7087402:7058396:7079290:7087537
cat:7066469:182:0:0:67050964:67087402:67058396
dog:7066469:182:0:0:7050964:7087402:7058396:7079290