如何在Linux中使用awk或sed从项目列表中获取特定数字

问题描述 投票:0回答:1
  1   = ["vm1", "product-sample-1", "130", "small_size","ENV"]
  2   = ["vm2", "product-sample-2", "145", "large_size", "ENV_NEW"]
  3   = ["vm3", "product-sample-3", "173", "big_size", "ENV_OLD"]

我想编写一个命令来搜索文件中包含的列表中的第一个字段,例如:(第 1 行中的 abc)并获取第三个字段中关联的 3 位数字。如何做到这一点?

我有这样的东西:

num = sh(returnStdout: true, script: "awk \'/${<variable>}/ { print \$4 }\' <filename> | tr -d \'\",\'").trim()

在本例中变量 = vm1。

这不起作用。

linux awk sed grep
1个回答
0
投票

这将按照您所显示的示例全晴天输入的要求进行操作,但考虑到其他各种可能的雨天情况(例如,引用字符串内有空格、逗号或方括号,或者行开头没有空格),这将执行您所要求的操作):

$ variable='"abc"'
$ awk -F'[][, ]*' -v var="$variable" '$4==var{gsub(/"/,"",$6); print $6}' file
130

如果您有这样的雨天案例,并且不想要仅适用于晴天案例的答案,请发布一个包含不仅仅是晴天案例的示例来展示您的要求,并为我们提供一些复制/粘贴的内容来测试潜在的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.