【问题标题】:awk for unexpected resultawk 意外结果
【发布时间】:2021-11-11 00:05:25
【问题描述】:

大家好,我有这个格式的文档。

id first_name last_name age address telephone item1 tax1 item2 tax2 item3 tax3

我需要这个结果

id first_name last_name age address telephone item1 tax1  
id first_name last_name age address telephone item2 tax2  
id first_name last_name age address telephone item3 tax3

将此命令与 awk 一起使用

awk '{for (i=5; i<NF; i+=2) print $1, $2, $3, $4, $5, $6, $i, $(i+1)}' file.txt > file2.txt

还有这个意想不到的结果

id first_name last_name age address telephone address telephone 
id first_name last_name age address telephone item1 tax1 
id first_name last_name age address telephone item2 tax2 
id first_name last_name age address telephone item3 tax3

如果你能帮助我,我将不胜感激。

【问题讨论】:

    标签: awk sed


    【解决方案1】:

    要使代码正常工作,您需要注意需要从哪个字段 ID 开始迭代。在这种情况下,它是字段 7。然后,您可以开始按您需要的方式“拆分”数据:

    awk '{for (i=7; i<NF; i+=2) print $1, $2, $3, $4, $5, $6, $i, $(i+1)}' file.txt > file2.txt
    

    online demo

    #!/bin/bash
    s='id first_name last_name age address telephone item1 tax1 item2 tax2 item3 tax3'
    awk '{for (i=7; i<NF; i+=2) print $1, $2, $3, $4, $5, $6, $i, $(i+1)}' <<< "$s"
    

    输出:

    id first_name last_name age address telephone item1 tax1
    id first_name last_name age address telephone item2 tax2
    id first_name last_name age address telephone item3 tax3
    

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 2012-10-09
      • 2018-09-04
      • 2017-06-02
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2014-03-21
      相关资源
      最近更新 更多