我的文件夹名为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存储到变量中并自行导出变量。
提前致谢!
答案 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
。