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程序…
  • 相关阅读:
    C++学习(c++17)——2.X.使用string和string_view
    C++学习(c++17)——1.3一个小程序(part2.Datebase类)
    论++i + ++i + ++i
    C++学习(c++17)——1.3 一个小程序(part1.Employee类)
    C++学习(c++17)——1.2 稍微深入研究C++
    VS2019社区版关于Qt的设置
    C++学习(c++17)——1.1 C++基础知识
    2020杭电多校第五场
    2020杭电多校第四场
    2020杭电多校第三场
  • 原文地址:https://www.cnblogs.com/itcomputer/p/4630851.html
Copyright © 2011-2022 走看看