Bash 使用命令行输出将AWK模式与变量一起使用
我需要一些帮助。我有这个命令Bash 使用命令行输出将AWK模式与变量一起使用,bash,ubuntu,awk,terminal,Bash,Ubuntu,Awk,Terminal,我需要一些帮助。我有这个命令 df -h | awk '/md2/' | awk '{print $5}' 我希望“/md2/”在变量中设置它search=“/md2/”使用 df -h | awk '$search' | awk '{print $5}' 没有回应,我怎么能这样做 使用: search='md2' df -h | awk -v x="$search" '$0~x{print $5}' 工作原理: -v x=“$search” 这告诉awk定义一个awk变量x,使其值为$
df -h | awk '/md2/' | awk '{print $5}'
我希望“/md2/”在变量中设置它search=“/md2/”使用
df -h | awk '$search' | awk '{print $5}'
没有回应,我怎么能这样做 使用:
search='md2'
df -h | awk -v x="$search" '$0~x{print $5}'
工作原理:
这告诉awk定义一个awk变量-v x=“$search”
,使其值为x
$search
$0~x{print$5}
告诉awk在变量$0~x
中选择与正则表达式匹配的行。对于所选行,打印字段5x
$search
在单引号内,这阻止bash将$search
的值替换为in。您可以通过以下方式看到这一点:
$ search='/md2/'; echo awk '$search'
awk $search
以下工作将起作用:
search='/md2/'
df -h | awk "$search" | awk '{print $5}'
这里,$search
位于双引号内,bash将展开双引号内的变量
这方面还有两个问题:
awk“$search”
有潜在危险。Awk将执行$search
的任何内容。除非您非常确定内容是什么,否则可能会导致文件损坏或删除等search='/md2/'
df -h | awk "$search" | awk '{print $5}'