【问题标题】:AWK split string then deliminate it as wellAWK 拆分字符串然后将其分隔
【发布时间】:2016-10-01 10:33:11
【问题描述】:

在拆分以下内容时需要帮助。

100GB@sdb,100GB@sdc

进入这个

sdb sdc

我尝试过的一切都在不断地给予我

sdb 100GB

【问题讨论】:

    标签: awk split delimiter


    【解决方案1】:

    对于任意数量的磁盘,尝试:

    $ echo '100GB@sdb,100GB@sdc,10KB@sdd' | awk -F'[@,]' '{for (i=2;i<=NF;i+=2) printf "%s ",$i; print ""}'
    sdb sdc sdd 
    

    原始问题的答案

    使用 awk

    $ echo '100GB@sdb,100GB@sdc' | awk -F'[@,]' '{print $2,$4}'
    sdb sdc
    

    使用 sed

    $ echo '100GB@sdb,100GB@sdc' | sed 's/^[^@]*@//; s/,[^@]*@/ /'
    sdb sdc
    

    使用 bash

    $ s='100GB@sdb,100GB@sdc'; s=${s#*@}; echo ${s/,*@/ }
    sdb sdc
    

    【讨论】:

    • 我的问题是我不知道它将跨越多少个磁盘。可能有 1 到 10+,所以 $2,$4 并不总是这样。
    • @debow OPK。有关任意数量磁盘的更一般情况,请参阅更新。
    • 完美!谢谢。
    【解决方案2】:

    另一种 AWK 命令:

    % awk 'BEGIN{RS="[@,]";ORS=" "}NR%2 == 0' <<< '100GB@sdb,100GB@sdc'
    sdb sdc
    

    这将在@, 上拆分,然后打印所有偶数块:

    100GB@sdb,100GB@sdc
    # 1    2    3    4  <- chunk 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      相关资源
      最近更新 更多