【问题标题】:Grabbing specific values in a column based on the value of another column in linux根据linux中另一列的值抓取一列中的特定值
【发布时间】:2022-06-11 23:50:52
【问题描述】:

我正在尝试获取特定文件上的特定值并将它们放在一个变量中,该变量将用于运行另一个脚本。

示例文件是

我想根据第 13 列(状态)的特定状态获取第 1(合作伙伴)、第 4(IDT)和第 5(IDTU)值的值。 (ACK_EXPECTED)。

这些值将用于在另一个脚本中运行。

我尝试了一些 awk 命令,但没有成功:

awk -v key=1 '$13 == ACK_EXPECTED { print $1 }' myfile.log

【问题讨论】:

  • 不要将文本文件内容作为图片发布,按原样发布:文本。
  • 您的 awk 命令中的错误是您正在与未定义的空变量 ACK_EXPECTED 进行比较;添加双引号将其转换为文字字符串"ACK_EXPECTED".

标签: linux shell scripting sh


【解决方案1】:

假设在您的日志文件中,所有列都由制表符(制表符)分隔,您可以尝试:

data=( $(grep "ACK_EXPECTED" myfile.log | cut -d$'\t' -f1,4,5) )

这个单行代码将您所有需要的值分配给一个名为data数组,最后您可以通过以下方式获取每个值:

echo ${data[0]}
DEV1

echo ${data[1]}
F0203240

echo ${data[2]}
A00003UF

如果您愿意,您可能需要更改分隔符(-d 选项)或使用awk 而不是cut

考虑把它放在一个循环中,因为你可以有多行greped

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多