zoukankan      html  css  js  c++  java
  • awk内置字符串函数 awk 格式化输出

    i249 ~ # ps -efl|head -1|awk '$2~/S/{print $2}'
    S
    i249 ~ # ps -efl|awk '$2~/S/{print $2}'
    S
    S
    S
    S

    printf

    -                                      左对齐

    Width                                  域的步长,用0表示0步长

    .prec                                  最大字符串长度,或小数点右面的位数

    %c                                     ASCII字符

    %d                                     整型

    %e                                     科学计数法

    %f                                     浮点型

    %g                                     awk决定哪种浮点数转换e或者f

    %o                                     八进制

    %s                                     字符串

    %x                                     十六进制

     例一:

     i161 admin # df -Th|awk '{print $1,$5}'
    Filesystem Avail
    rootfs 23G
    /dev/root 23G
    tmpfs 16G
    rc-svcdir 956K
    cgroup_root 10M
    udev 9.8M
    shm 16G
    /dev/md4 2.5T

    i161 admin # df -Th|awk '{printf "%-15s %-15s ",$1,$5}'
    Filesystem          Avail          
    rootfs                23G            
    /dev/root           23G            
    tmpfs                16G            
    rc-svcdir            956K           
    cgroup_root       10M            
    udev                  9.8M           
    shm                  16G            
    /dev/md4           2.5T

    awk有许多强大的字符串函数

    gsub(r,s)                              在整个$0中,用s代替r

    gsub(r,s,t)                           在整个t中,用s代替r

    index(s,t)                             返回s中字符串t的第一位置

    length(s)                               返回s长度

    match(s,r)                             测试s是否包含匹配r的字符串

    split(s,a,fs)                         使用分隔符fs将字符串s划分为指定序列a

    sprint(fmt,exp)                       输出经过fmt格式化后的exp

    substr(s,p)                            返回字符串s中从p开始的后缀部分

    substr(s,p,n)                         返回字符串s中从p开始的长度为n的后缀部分

    例一:

    [root@localhost shell]# awk -F ":" 'gsub(/502/,213213213) {print$0}' passwd

    test:x:213213213:213213213::/home/test:/bin/bash

    [root@localhost shell]#

    例二:

    [root@localhost shell]# awk -F ":" 'gsub(/502/,213213213,$3) {print$0}' passwd

    test x 213213213 502  /home/test /bin/bash

    [root@localhost shell]#

    例三:

    [root@localhost shell]# awk 'BEGIN {print index("test","t")}' passwd

    1

    [root@localhost shell]#

    例四:

    [root@localhost shell]# awk -F ":" '{if($1=="test"){print$0,length($1)}}' passwd

    test:x:502:502::/home/test:/bin/bash 4

    [root@localhost shell]#

    例五:

    [root@localhost shell]# awk -F ":" '{if($1=="test") {print substr($1,1,3)}}' passwd

    tes

    [root@localhost shell]#

    例六:

    [root@localhost shell]# awk 'BEGIN {STR="a few good men"} END{print substr(STR,7)}' passwd

    good men

    [root@localhost shell]#

    例七:

    [root@localhost shell]# STR=test.txt

    [root@localhost shell]# echo $STR

    test.txt

    [root@localhost shell]# echo $STR | awk '{print substr($0,1,4)}'

    test

    [root@localhost shell]# echo $STR | awk '{print substr($0,6)}'

    txt

    基本就是这么一些了。。其实我一直感觉很像C程序…
  • 相关阅读:
    【机器学习】机器学习12个关键经验教训
    【机器学习】24个终极项目提升您的机器学习知识和技能
    2018-12-21-WPF-弹出-popup-里面的-TextBox-无法输入汉字
    2019-10-31-C#-dotnet-获取整个局域网的-ip-地址
    2018-11-26-win10-uwp-获取窗口的坐标和宽度高度
    2019-5-21-dotnet-core-使用-CoreRT-将程序编译为-Native-程序
    2019-5-21-Roslyn-使用-Directory.Build.props-管理多个项目配置
    2019-2-26-SublimeText-快速打开当前文件的文件夹
    2019-2-18-VisualStudio-给项目添加特殊的-Nuget-的链接
    2019-8-31-dotnet-如何在-Mock-模拟-Func-判断调用次数
  • 原文地址:https://www.cnblogs.com/itcomputer/p/4630851.html
Copyright © 2011-2022 走看看