• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Linux里awk中split函数的用法小结

    The awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep.

    set time = 12:34:56
    set hr = `echo $time | awk '{split($0,a,":" ); print a[1]}'` # = 12
    set sec = `echo $time | awk '{split($0,a,":" ); print a[3]}'` # = 56
    # = 12 34 56
    set hms = `echo $time | awk '{split($0,a,":" ); print a[1], a[2], a[3]}'`

    ——————————————————————————————————————————
    Q:
    name="768685676435435263341231231212321"
    awk 'BEGIN {print split("$name", filearray, "")}'
    为什么是1

    awk 'BEGIN {print split("768685676435435263341231231212321", filearray, "")}'
    则返回正确的结果,应该是7,有没有人解答一下?

    A:
    变量引用错误,这样做试试
    awk 'BEGIN {print split('"\"$name\""', filearray, "")}'

    awk规定引用系统变量必须使用单引号加双引号,即'"$sysvar"'这样的格式,但是split函数也需要双引号来定界,但这个双引号又不能让sh解释,而应留给awk来解释,所以使用了\"和\"组成的双引号

    split函数的用法

    he awk function split(s,a,sep) splits a string s into an awk array a using the delimiter sep.
    set time = 12:34:56
    set hr = `echo $time | awk '{split($0,a,":" ); print a[1]}'` # = 12
    set sec = `echo $time | awk '{split($0,a,":" ); print a[3]}'` # = 56

    # = 12 34 56
    set hms = `echo $time | awk '{split($0,a,":" ); print a[1], a[2], a[3]}'`
    set hms = `echo $time | awk '{split($0,a,":" ); for (i=1; i=3; i++) print a[i]}'`

    实例一:

    cat a
    a:b:c:d:e:f:g:h:i
    使用awk将该字符串冒号两边的段输出
    cat a |awk -F':' '{split($0,arr,":")}END{for(i=1;i=NF;i++)printf("%s\n",arr[i])}'
    输出结果如下
    a

    c
    d
    e
    f
    g
    h
    i

    您可能感兴趣的文章:
    • Linux awk将文件某列按照逗号分隔的例子
    • 一天一个shell命令 linux文本内容操作系列-awk命令详解
    • linux awk时间计算脚本及awk命令详解
    • linux之awk命令的用法
    • Linux 中awk 提取包含某个关键字的段落
    上一篇:linux shell实现获取用户输入指定范围的单个字符的两种方法
    下一篇:学习shell脚本之前的基础知识[图文]
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Linux里awk中split函数的用法小结 Linux,里,awk,中,split,函数,