awk行号相关的操作 | 您所在的位置:网站首页 › linux获取指定行号后的内容是什么 › awk行号相关的操作 |
一. 行距: 1. 每行间加一个空行 awk '1; { print "" }' filname.ext #输出当前行,在输出一个空行 awk '1 { print } { print "" }' filname.ext awk '{ print } { print "" }' filname.ext2. 1的另外一种实现方法: awk 'BEGIN { ORS="\n\n" }; 1' filname.ext #预先设置每一行的分隔符号为两个换行;你可以尝试把ORS设置为其他的看看效果如何3. 仅输出非空行,并每行间在加一个空行 awk 'NF { print $0 "\n" }' filname.ext #NF表示当前行的字段数,$0表示当前行,最后再加一个换行4. 双倍行距;没行间两个空行 awk '1; { print "\n" }' filname.ext #默认输出后会换行的,输出\n,则会输出两个空白行等同于: awk '{ print; print "\n" }' filname.ext5. 显示当前行在所在文件中的行号 awk '{ print FNR "\t" $0 }' filname.ext #FNR,表示当前行在文件中的行号6. 显示当前行在本次处理过程中的行号 awk '{ print NR "\t" $0 }' filname.ext #NR,表示当前行在本次处理过程中的行号小疑问:为啥有FNR和NR的差别呢?效果不都是一样么? 如果你给如:filname1.ext filname2.ext,你就会看到差别了。原来:FNR,是每个文件中的,换了一个文件,会归零;而NR则每个文件会累加起来的 7. 使用简单样式来输出 awk '{ printf("%5d : %s\n", NR, $0) }' filname.ext #行号占用5位,不足补空格8. 显示非空行 awk 'NF { $0=++a " :" $0 }; { print }' filname.ext #NF前面说了,表示当前行的行号,此处用他作为条件,如果是空行,则NF为0,跳过;否则,用动态变量a存储非空行的数目9. 计算行数:效果类似wc -l awk 'END { print NR }' filname.ext #END表示每行都处理完了后,在执行,此时NR就是最后一行的行号,也就是总的行数了。10. 计算每一行的和 awk '{ s = 0; for (i = 1; i max { max=$1; maxline=$0 }; END { print max, maxline }' filname.ext #用max存储最大的数,maxline存储最大数所在的行,并在最后输出16. 显示当前行的字段数,并输出当前行 awk '{ print NF ":" $0 } ' filname.ext17. 显示每行最后一个字段的内容 awk '{ print $NF }' filname.ext #NF表示当前行的字段数,例如为3,则$NF,就是$3,也就是第三个字段了18. 显示最后一行的最后一个字段 awk '{ field = $NF }; END { print field }' filname.ext #每行处理没有输出,尽在最后输出,field作为每行的最后一行的暂存变量19. 显示字段数小于4的行 awk 'NF < 4' filname.ext #{}以外的内容,作为条件,没有{},则默认输出当前行20. 显示每行的最后一个字段小于4的行 awk '$NF < 4' filname.ext #注意和19对比 |
CopyRight 2018-2019 实验室设备网 版权所有 |