【问题标题】:How to do text processing using awk to cut last field in a line?如何使用 awk 进行文本处理以剪切一行中的最后一个字段?
【发布时间】:2018-06-15 03:59:56
【问题描述】:

我有这种情况,如果我可以即兴发挥 awk 输出,我需要。

  1. 猫示例.txt

    "id": "/subscriptions/fbfa3437-c63c-4ed7-b9d3-fe595221950d/resourceGroups/rg-ooty/providers/Microsoft.Compute/virtualMachines/fb11b768-4d9f-4e83-b7dc-ee677f496fc9",
    "id": "/subscriptions/fbfa3437-c63c-4ed7-b9d3-fe595221950d/resourceGroups/rg-ooty/providers/Microsoft.Compute/virtualMachines/fbee83e8-a84a-4b22-8197-fc9cc924801f",
    "id": "/subscriptions/fbfa3437-c63c-4ed7-b9d3-fe595221950d/resourceGroups/rg-ooty/providers/Microsoft.Compute/virtualMachines/fc224f83-57f4-41eb-aee3-78f18d055704",
    
  2. 我希望在 /virtualMachines/ 之后剪切模式

  3. 因此,使用以下 awk 命令获取输出。

    cat example.txt | awk '{print $2}' | awk -F"/" '{print $(NF)}' | awk -F'",' '{print $1}'
    fb11b768-4d9f-4e83-b7dc-ee677f496fc9
    fbee83e8-a84a-4b22-8197-fc9cc924801f
    fc224f83-57f4-41eb-aee3-78f18d055704
    
  4. 有什么方法可以在单个 awk 执行中使用一些选项,例如“getline”或多个 awk 选项,或者有更好的方法来改进命令以获取输出?

请提出建议。

【问题讨论】:

  • 很高兴您在帖子中表现出自己的努力,请尝试选择一个答案(在您在帖子中看到一些答案后)作为正确答案以完成主题。
  • 如果这是 JSON,我建议使用 jq

标签: bash shell unix awk


【解决方案1】:

使用"/ 作为字段分隔符并打印倒数第二个字段:

awk -F '["/]' '{print $(NF-1)}' file

输出:

fb11b768-4d9f-4e83-b7dc-ee677f496fc9 fbee83e8-a84a-4b22-8197-fc9cc924801f fc224f83-57f4-41eb-aee3-78f18d055704

【讨论】:

    【解决方案2】:

    如果 example.txt 的间距和看起来一样一致,那么使用 cut-c字符 计数选项会更简单:

    cut -c 127-162 example.txt
    

    输出:

    fb11b768-4d9f-4e83-b7dc-ee677f496fc9
    fbee83e8-a84a-4b22-8197-fc9cc924801f
    fc224f83-57f4-41eb-aee3-78f18d055704
    

    【讨论】:

      【解决方案3】:

      您也可以为此使用 sed:

      sed 's#.*/\([^/]*\)",#\1#' example.txt
      

      匹配任何 .* 正斜杠 / 然后捕获 \( 任意数量的非正斜杠字符 [^/]*,结束捕获 \) 后跟引号和逗号以结束 ",,并将其替换为捕获的组(正斜杠和末尾的 ", 之间的任何内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-21
        • 2014-03-21
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多