• awk之7 常用函数的解析


    1.区域获取

    substr(区域f,起始位置n1,获取范围n2)

    解析:获取某个区域f内,从起始位置n1开始算起的n2个字符组成的字符串.如果n2不存在,则返回从n1开始到区域结束的内容.

    例子:获取某个文件的类型属性

    ll filename | awk '{print substr($1,1,1)}' 

    $1标示文件的权限区域,第一个数字1标示权限区域的首位,第二个数字1标示获取从首位开始的第一个字符.即类型.

    awk的substr函数是从1开始计数


    其他类似获取方法:变量的特殊使用.
    解析:获取变量n1位置开始算起的n2个字符组成的字符串.${变量名:起始位置n1:获取范围n2}

    例子:fd=$(ll filename);echo ${fd:0:1}

    变量的获取是从0开始计数


    2.区域替换

    gsub(/匹配的正则r/,"替换后的字符串s",区域f)

    解析:在区域f(若无,则默认是$0)内,将利用正则r匹配到的内容,替换为s

    正则表达式,必须用//括起来

    如果s是数字,则无需双引号,如果是字符串,必须用引号.

    例子:

    #echo $fd | awk '{gsub(/^test/,"test1",$NF);print $NF}'

    test1.py

    #echo $fd

    -rwxr--r-- 1 root root 64 5月 6 14:40 test.py


    其他类似获取方法:sed的替换

    #echo $fd | sed 's/test/test1/'


    sed无法将修改限定在某个区域

    例如:替换第二个test为abcd

    #echo "test1;test2" | sed '/test2/{s/test/abcd/}'

    abcd1;test2

    但是可以用awk限定仅修改第二个,例如:

    #echo "test1;test2" | awk 'BEGIN{FS=";";OFS=";"}{gsub(/test/,"abcd",$2);print $0}'

    test1;abcd2


    3.获取字符串位置

    index("范围字符串s1"或者区域字段f,"需要定位的字符串s2")

    解析:在区域f或者字符串s1中,查找字符串s2的起始位置,如果找不到,返回0

    例子:

    # echo "12345678" | awk '{print index($0,"5")}'

    5


    4.获取字符串的长度

    length("字符串"或区域f)

    解析:返回字符串或者区域f的长度,如果不写,则返回$0长度

    例子:

    # echo "123 123 1234" | awk '{print length($3)}'

    4

    # echo "123 123 1234" | awk '{print length()}'

    12


    5.分割字符串形成数组

    split("待分割的字符串s",数组a,分隔符r)

    解析:用默认FS或者r将字符串s进行分割,然后形成以数字为下标的数组a,下标从1开始.

    例子:

    root@aaa103439-pc:~# cat test

    a1a d2e a3a

    b1b d2e b3b

    c1c d2e c3c

    root@aaa103439-pc:~# awk '{split($1,a,/1/);split($2,b,/2/);split($3,c,/3/);print a[1],b[1],c[1]}' test

    a d a

    b d b

    c d c











    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    centos7 升级 python3
    宿主机休眠后,虚拟机网络ping不通网关
    给微信群和朋友圈里发长视频的方法
    在word2019中使用latex
    anki2.1中使用latex,使用 MathJax 渲染latex格式的数学公式,化学公式
    如何用GoldWave批量删除mp3文件开头65秒?
    一款 CentOS-7 个性化配置脚本
    算法及算法分析
    博客园markdown使用LaTeX数学公式
    数据结构与算法
  • 原文地址:https://www.cnblogs.com/aaa103439/p/fbb4593582648a8c0000000000000000.html
Copyright © 2020-2023  润新知