【问题标题】:How to Use AWK within AWK for extracting data with multiple delimeter如何在 AWK 中使用 AWK 提取具有多个分隔符的数据
【发布时间】:2022-01-13 02:38:15
【问题描述】:

我想从具有不同分隔符的分隔值中提取数据。 例如:

file1.txt

head|first|java programming|hello|world

第一级分隔符是 | 第二级分隔符是空格。

awk -F"|" '{print $2," ",$3}'

这给出了第一个 java 编程。

我只想打印

第一个java

即我的第二个价值 3 美元,我必须再次划定界限。 注意上面例子中是空格,也可以是分号。

我不想使用管道,因为这将是更大的 awk 脚本块的一部分。

【问题讨论】:

  • 使用split()函数,即split($2,a,/ /); print $2 " " a[1]

标签: awk


【解决方案1】:

使用任一管道或空格作为字段分隔符:

awk -F '[ |]' '{print $2, $3}'

默认的输出字段分隔符是空格,所以print $2, " ", $3会在单词之间打印三个空格。

【讨论】:

    【解决方案2】:

    如果分隔符可以是空格或分号,则可以使用字符类-F"[ ;]"

    然后对于您拥有的每个部分,您可以在管道字符上拆分,并打印第 2 项和第 3 项。

    数据

    $cat file1.txt
    head|first|java programming|hello|world
    head|first|java;programming|hello|world
    

    例子

    awk -F"[ ;]" '
    {
      split($1,a,"|")
      print a[2],a[3]
    }
    ' file1.txt
    

    输出

    first java
    first java
    

    【讨论】:

      【解决方案3】:
      $ awk -F'|' '{split($3,a,/[ ;]/); print $2, a[1]}' file
      first java
      

      【讨论】:

        猜你喜欢
        • 2018-04-08
        • 2012-08-25
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-30
        • 2013-03-17
        相关资源
        最近更新 更多