美文网首页
awk案例整理

awk案例整理

作者: jerrik | 来源:发表于2020-12-12 22:39 被阅读0次

    --关于内建变量,统一总结下:
    0 当前记录(即整个行的内容)1~$n 当前记录的第n个字段,字段间由FS分隔
    FS 输入字段分隔符 默认是空格或Tab
    NF 当前记录中的字段个数,就是有多少列
    NR 已经读出的记录数,就是行号,从1开始,当有多个文件的时候记录数就会累加
    FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号,多个文件也不会累加
    RS 输入的记录分隔符, 默认为换行符
    OFS 输出字段分隔符, 默认也是空格
    ORS 输出的记录分隔符,默认为换行符
    FILENAM 当前输入文件的名字

    awk案例

    echo "a b c d" |awk '{2=2" e f g";print}'

    格式化文本

    awk 'BEGIN{OFS="\t"}{1=1;print $0}' a.txt

    取lo之外的所有ip地址

    ifconfig|awk '/inet/ && !(2 ~ /^127/){print2}'
    ifconfig|awk 'BEGIN{RS=""}!/lo/{print $6}'

    awk '$6=="LISTEN"' netstat.txt

    忽略第一行

    ls -rlth|awk 'NR>1 {print $1}'

    能输出

    awk -F : -v n=3 'n{print 1 "-"3}' /etc/passwd

    awk -F: '$4=="4" {print}' /etc/passwd

    不能输出

    awk -F : -v n=0 'n{print 1 "-"3}' /etc/passwd

    awk '$3>10{print}' /etc/passwd

    查看链接情况

    netstat -natp | awk '/^tcp/ {++state[$6]} END {for(key in state) print key,"",state[key]}'

    打印长度

    awk 'BEGIN{print length("hello")}'

    使用函数

    awk -F ":" '{print toupper($1)}' /etc/passwd

    输出每行倒数4个字符

    awk '{print substr(0,length(0)-6,length($0))}' /etc/passwd

    取IDC最后4位

    cat idc.txt |awk '{print toupper(substr(0,length(0)-4,length($0)))}'|sort|uniq

    匹配有用户的

    awk '/usr/' /etc/passwd

    相关文章

      网友评论

          本文标题:awk案例整理

          本文链接:https://www.haomeiwen.com/subject/lfaygktx.html