使用awk从文本中保存变量

时间:2013-06-18 12:57:19

标签: bash variables awk

我的文件夹名为parameters.txt,其中包含

PP1 20 30 40 60

PP2 0 0 0 0

我想使用awk根据每行中第一个文本字段的值读取不同的参数。目前,如果我跑

src_dir='/PP1/'
awk "$src_dir" '{ print $2 }' parameters.txt

我正确得到了

20

我只想将20存储到变量中并自行导出变量。

提前致谢!

3 个答案:

答案 0 :(得分:2)

如果要保存输出,请执行var=$(awk expression)

result=$(awk -v value=$src_dir '($1==value) { print $2 }' parameters.txt)

您可以使命令更通用,使用-v语法为awk提供变量:

$ var="PP1"
$ awk -v v=$var '($1==v) { print $2 }' a
20
$ var="PP2"
$ awk -v v=$var '($1==v) { print $2 }' a
0

答案 1 :(得分:2)

你真的不需要awk。您可以在bash

中执行此操作
$ src_dir="PP1"
$ while read -r pattern columns ; do 
      set - $columns
      if [[ $pattern  =~ $src_dir ]]; then 
          variable=$2
      fi
   done < parameters.txt

答案 2 :(得分:0)

shell_pattern=PP1
output_var=$(awk -v patt=$shell_pattern '$0 ~ patt {print $2}' file)

请注意,如果模式匹配多行,$output_var可能包含多个值。如果您只对第一个值感兴趣,请在打印后使用awk程序exit