我的文件夹中有一个名为 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 存储到一个变量中并导出变量本身。
提前致谢!
如果要保存输出,请执行以下操作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
你真的不需要awk
那个。你可以在bash
.
$ src_dir="PP1"
$ while read -r pattern columns ; do
set - $columns
if [[ $pattern =~ $src_dir ]]; then
variable=$2
fi
done < parameters.txt
shell_pattern=PP1
output_var=$(awk -v patt=$shell_pattern '$0 ~ patt {print $2}' file)
请注意,$output_var
如果模式匹配多于一行,则可能包含多个值。如果您只对第一个值感兴趣,那么在 printexit
之后使用 awk 程序。