码迷,mamicode.com
首页 > 其他好文 > 详细

awk用法

时间:2018-07-06 01:39:29      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:set   就是   打印   特殊字符   文件中   一起   连接   引号   截取   

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

    标签:set   就是   打印   特殊字符   文件中   一起   连接   引号   截取   

    原文地址:http://blog.51cto.com/10941098/2136881

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!