zoukankan      html  css  js  c++  java
  • awk支持多个记录分隔符的写法

    awk的-F参数可以指定新的记录分隔符,有些时候可能需求指定多个分隔符,比如下面的内容

    720 height:360

    如果需要取出width和height后面的值的话,一般大家会这样做,即做两次awk操作

    # echo "720 height:360" | awk '{print $1;print $2}' | awk -F: '{print $2}'
    720
    360

    其实呢,通过在awk中指定两个记录分隔符(空格和:),即可一次性的提取出width和height后面的值,在awk中支持多个记录分隔符的写法如下

    # echo "720 height:360" | awk -F'[ :]' '{print $2,$4}'
    720 360

    不过,一般像下面这样写,多一个加号表明将连续出现的记录分隔符当做一个来处理

    # echo "720 height:360" | awk -F'[ :]+' '{print $2,$4}'
    720 360

    可以尝试在height前面再增加一个空格,各位可以自己去命令行下尝试下

    # echo "720  height:360" | awk -F'[ :]' '{print $2,$4}'
    720 height
    # echo "720  height:360" | awk -F'[ :]+' '{print $2,$4}'
    720 360

    注意:

    在awk中,当记录分隔符指定为空字符串时,awk会将多个连续的空白看做一个单一的记录分隔符。此外,awk还会忽略开头和结尾处的空白。

    awk支持正则表达式形式的记录分隔符,你可以改成其它的正则表达式来进行测试。上面虽然介绍了awk中使用多个记录分隔符的写法,但是这些记录分隔符都是单个字符,如果记录分隔符是个字符串怎么办呢?

    之前说过,awk支持正则表达式形式的记录分隔符,那就写个正则表达式就好,比如要指定分隔符为one和two

    # echo "i have two apples and one banana" | awk -F'one|two' '{for(i=1;i<=NF;i++)print i,"="$i}'
    1 =i have 
    2 = apples and 
    3 = banana
  • 相关阅读:
    python中使用到lxml模块时,py2exe打包方法
    python random
    pip install lxml出错解决
    Windows上Python2和3如何兼容
    python 2.4 与 python 3.0 的比较
    java综合(三)springmvc与spring上下文关系
    java综合(二)springmvc与spring整合
    PHP7 新增加的两种运算符
    PHP trait 特性
    PHP 字符串拆分函数
  • 原文地址:https://www.cnblogs.com/xialiaoliao0911/p/7523981.html
Copyright © 2011-2022 走看看