2

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

PP1 20 30 40 60

PP2 0 0 0 0

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

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

我正确地得到

20

我只想将 20 存储到一个变量中并导出变量本身。

提前致谢!

4

3 回答 3

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
于 2013-06-18T13:03:22.757 回答
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
于 2013-06-18T13:19:55.420 回答
0
shell_pattern=PP1
output_var=$(awk -v patt=$shell_pattern '$0 ~ patt {print $2}' file)

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

于 2013-06-18T13:36:09.260 回答