您的位置:首页 > 运维架构 > Shell

shell脚本用awk修改字段的值

2014-07-12 11:01 435 查看
假如我们想修改filename文件中的一个记录中的某个字段值,比如...BillJoy        1939  SunLarryEricsson  1940  Oracle...我们想把LarryEricsson那一条记录的1940改成1950,我们可以这么做:#$1指模式匹配的字段awk '$1 ~ /LarryEricsson/{$2=1950;}1'filename 1<>filename在项目中,我们经常要编写shell脚本来编译工程。如果我们想记录工程编译的次数,我们可以用上面这个技巧来实现。现在我们要一个编译工程的脚本buildPrjxxx.sh,我们想把编译次数记录下来,我们可以单独编译次数写进一个文件中,然后每次启动buildPrjxxx.sh的时候读取文件的值然后修改。但是现在我们要想把这个值记录在buildPrjxxx.sh中,而不是写在一个单独的文件。我们可以这样写我们的buildPrjxxx.sh。
awk '$1 ~ /__BUILD_TIME__/{$2=$2+1;}1' $0 1<>$0#这里用来取出被修改的字段的值,然后对齐格式buildCount=$(awk '/^__BUILD_TIME__/ { print $2; exit 0; }' $0)if [ $buildCount -lt 10 ]thenbuildCount="000$buildCount"elif [ $buildCount -gt 10 && $buildCount -lt 100 ]thenbuildCount="00$buildCount"elif [ $buildCount -gt 100 && $buildCount -lt 1000 ]thenbuildCount="0$buildCount"fiecho "total build time: $buildCount"#you can add you code hereexit 0__BUILD_TIME__ 0
OK,现在我们只要每编译buildPrjxxx.sh一次,__BUILD_TIME__都会记录下我们当前的编译次数,并且还实现了输出格式的对齐。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell awk