awk用法

  1. 截取文档中的某段
    awk -F ':' '{print $1}' 1.txt
  2. 使用自定义字符连接每个段
    awk -F ':' '{print $1"#"$2"#"$3"#"$4}' 1.txt
    或者使用awk内部变量OFS,awk -F ':' '{OFS="#"} {print $1,$2,$3,$4}' 1.txt
  3. 匹配字符或字符串
    awk '/oo/' 1.txt
  4. 针对某个段匹配
    awk -F ':' '$1~/oo/' 1.txt
  5. 多次匹配
    awk -F ':' '/root/ {print $1,$3};$1~/test/;$3~/20/' 1.txt
  6. 第三段为0
    awk -F ':' '$3+=="0" 1.txt
  7. 第三段大于等于500
    awk -F ':' '$3>=500' 1.txt
  8. 第七段不是’/sbin/nologin'
    awk -F ':' '$7!="/sbin/nologin"' 1.txt
  9. 第三段小于第四段
    awk -F ':' '$3<=$4' 1.txt
  10. 第三段大于5,并且第三段小于7
    awk -F ':' '$3>5&&$3<7' 1.txt
  11. 第三段大于5或者第七段为‘/bin/bash’
    awk -F ':' '$3>"5"||$7=="/bin/bash"' 1.txt
  12. awk内置变量 NF(段数) NR(行数)
    head -n3 1.txt|awk -F ':' '{print NF}' #打印最后一个
  13. 打印20行以后的行
    awk 'NR>20' 1.txt
  14. 打印20行以后并且第一段包含ssh的行
    awk -F ':' 'NR>20&&$1~/ssh/' 1.txt
  15. 更改某个段的值
    awk -F ':' '$1="root"' 1.txt
  16. 数学计算,把第三段和第四段值相加,并赋予第七段
    awk -F ':' '{$7=$3+$4;print $0}' 1.txt
    这样相当于改变了原来文本的结构,所以print$0 的时候就不再有分隔符显示,想显示分隔符就要用OFS
    awk -F ':' '{OFS=";"} {$7=$3+$4;print $0}; 1.txt
  17. 计算第三段总和
    awk -F ':' '{(tot=tot+$3)};END {print tot}' 1.txt
  18. awk中使用if
    awk -F ':' '{if($1=="root") print $0}' 1.txt
  19. awk用print打印单引号
    awk '{print "This is a ‘"''"'”$1}‘ filename
    #在awk中,使用脱意字符\是不起作用的,如果想打印特殊字符,只能使用'""'这样的组合才可以。从左至右为单引号,双引号,双引号,单引号,例如想脱意$就是’“$"'
  20. 把两个文件中同一行的内容一起打印出来awk 'NR==FNR{a[$1]=$2}NR>FNR{print $0,a[$1]}' 1.txt 2.txt或者pasete txt1 txt2 #如果想用指定的字符连接,可以用-d来指定 paste -d '+' 1.txt 2.txt#NR表示读取的行数,FNR表示读取的当前行数,当NR==FNR就表示读取1.txt文件,当NR>FNR表示读取2.txt,数组a相当于一个map
相关文章
相关标签/搜索