zoukankan      html  css  js  c++  java
  • awk 内置变量

    awk 内置变量

    FS 设置输入域分隔符,等价于命令行 -F选项

    OFS 输出域分隔符


    NF 浏览记录的域的个数
    NR 已读的记录数


    RS 控制记录分隔符

    ORS 输出记录分隔符

    substr 截取指定的字符串

    gsub 替换指定字符串 

    实例:

    1. FS设置域分隔符 等于-F。

    过滤出了/etc/passwd 文件中的第一列

    [root@centos-1 ~]# awk 'BEGIN{FS=":"}{print $1}' /etc/passwd
    root
    bin
    daemon
    adm
    lp
    sync

    2.OFS 输出域分隔符。

      我们可以改变文件内容的分割符号,并且打印出来

    文件内容如下

    [root@centos-1 ~]# cat abc
    123  456
    abc  bcd
    aaa  bbb

     

    [root@centos-1 ~]# awk 'BEGIN{OFS=","}{print $1,$2}' abc
    123,456
    abc,bcd
    aaa,bbb

    注意:这种情况需要多列,单列是不行的

    3.NF 浏览记录的域的个数

    打印出每行有几列

    [root@centos-1 ~]# awk '{print NF}' abc
    2
    2
    2

    4.NR 已读的记录数

    awk 读了几行内容

    [root@centos-1 ~]# awk '{print NR}' abc
    1
    2
    3

     

    5、ORS 输出记录分隔符

    awk规定,对于文本文件,默认情况下,一条记录对应一行,即记录之间的默认分隔符是换行符;而一条记录又可以分为多个字段,默认字段分隔符为空格

    [root@centos-1 ~]# cat abc
    123
    abc
    aaa

    [root@centos-1 ~]# awk 'BEGIN{ORS=","}{print $0}' abc
    123,abc,aaa,[root@centos-1 ~]#

    所以我们可以在编辑某些文件时,可以让文件内容横排显示,并且加上一定的分割符号

     

    6.substr($n,n)  打印指定的列,并且从指定的第n个字符开始打印

      substr($n,n,m)  打印指定的列,并且从指定的第n个字符开始打印,到m个字符停止

     [root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,1)}}' /etc/passwd

     /bin/bash

    [root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,2)}}' /etc/passwd

     bin/bash

    [root@centos ~]# awk 'BEGIN{FS=":"}{if(NR==1){print substr($NF,3)}}' /etc/passwd

    in/bash

    过滤IP

    [root@server2 ~]# ifconfig |awk '{if(NR==2){print substr($2,6,12)}}'
    192.168.3.12

    将第一行的每个字符后面加一个空格

    [root@server2 ~]# awk 'BEGIN{ORS=" "}{if(NR==1){for(i=1;i<=length();i++){print substr($0,i,1)}print " "}}' /etc/passwd
    r o o t : x : 0 : 0 : r o o t : / r o o t : / b i n / b a s h

     

    7.将第二段的数字替换成行号

    [root@centos6 ~]# cat abc
    hshs a=1 jsjs
    hds a=1 isi
    hshppls a=1 jswyuwe
    hyeyeushs a=1 jspppjs
    h555shs a=1 jsjs888dh
    hshggghs a=1 jshehhjs
    hshhhhshes a=1jsjs7iii
    hshshhsjs a=1 suuejejs
    hshgewheues a=1 jejejsjs
    hsujejeuhs a=1 77ieh2ssjs

    [root@centos6 ~]# awk '{sub($2,"a="NR);print > "abc"}' abc

    print > "abc":将更改后的数据重定向到源文件当中。文件名必须要用双引号引起来

  • 相关阅读:
    路径规划 Adjacency matrix 传球问题
    Graph
    n的阶乘的n次方根的倒数的序列为无穷小序列
    原文来自 url get
    对称加密 非对称加密 生活模型
    签名 sign key 纸质邮件 历史 RSA诞生历史
    离散数学图论
    内联函数
    由适当地放宽不等式 概括出 一个引理
    序列 有界 无界的证明
  • 原文地址:https://www.cnblogs.com/pangbing/p/6918202.html
Copyright © 2011-2022 走看看