【问题标题】:Read variable from file with awk?用awk从文件中读取变量?
【发布时间】:2017-09-19 20:39:54
【问题描述】:

我是使用 awk 的新手,我发现它对于从列中提取数据非常有用。例如在我的文件中,我有

Data:     1234      23434     31324

如果我想要我使用的第二列:

awk '/Data:/ {print $3}' file.txt

但是接下来,我在文件中有一些变量,比如说:

variable_1=1
variable_2=4

我怎样才能只提取值?如何通过知道值来提取变量的名称?

【问题讨论】:

  • @anubhava 不工作
  • 请参阅下面来自@hek2mgl 的答案,这应该适合您
  • 你可以像使用Data一样使用variable_1来选择你想要的单行。

标签: bash awk


【解决方案1】:

awk 提供指定字段分隔符:

awk -F'=' '$1 == "variable_1" {print $2}' file

打印:

1

【讨论】:

  • 是的,它指定了一个新的分隔符,但我怎么能只有值。它有效,但如果右侧有更多字符,它也会提取它们。
  • @JoshuaSalazar 你能举一个输入数据的具体例子和你的预期输出吗?
  • 不讨论边缘情况,你基本上想做什么?我的意思是你的用例是什么?我问是因为如果你想解析 shell 语法,那么你可能会使用 shell,而不是 awk。
  • 当您想从 shell 脚本中提取变量时,请使用 shell。期间 :) source file.sh; echo "${variable_1}" 我不会在这里宣传不良做法。
  • 我的意思是,您可以在= 之后提取任何内容,直到行尾或#。但是你怎么处理这个:var1="hey this is not a # comment"
【解决方案2】:

你可以用你的文件做很多事情,你真正想要什么?
获取值:

source file.txt
echo "variable_1=${variable_1}"
echo "variable_2=${variable_2}"

获取值2对应的键

sed '/=2$/ s/=.*//' file.txt

【讨论】:

    猜你喜欢
    • 2014-10-15
    • 1970-01-01
    • 2019-09-18
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多