将变量与AWK匹配
这是我的代码:将变量与AWK匹配,awk,pattern-matching,Awk,Pattern Matching,这是我的代码: awk -v header=$header '{if($0~/header/){if(i>0){printf "\n"$0}else{printf $0}}else{printf "\t"$0};i++}END{printf "\n"}' $1 > $basename1"_tab.tab" 但是,它只处理“header”,而不是变量的内容。例如,如果我设置header='hola',我希望脚本匹配hola而不是header 你知道吗 提前感谢。试试这个: awk -
awk -v header=$header '{if($0~/header/){if(i>0){printf "\n"$0}else{printf $0}}else{printf "\t"$0};i++}END{printf "\n"}' $1 > $basename1"_tab.tab"
但是,它只处理“header”,而不是变量的内容。例如,如果我设置header='hola',我希望脚本匹配hola而不是header
你知道吗
提前感谢。试试这个:
awk -v head="$header" '{if($0~head){if(i>0){printf "\n"$0.....
可以使用双引号来使用shell变量 示例1:
rahul@test-srv:~$ u=root
rahul@test-srv:~$ awk "/$u/" /etc/passwd
root:x:0:0:root:/root:/bin/bash
示例2#
真奇怪。如果您将
标题
更改为h
它会工作
header=hola; echo hola | awk -v h=$header '/h/{print "Matched"}'
Matched
header=hola; echo hola | awk -v header=$header '/header/{print "Matched"}'
肯特的似乎不起作用-这绝对不是我所期望的
header=hola; echo hola | awk -v header="$header" '/header/{print "Matched"}'
/../
中的变量被视为文字变量。改用$0~标题
。使用/h/
时,它与**h**ola
h
中的h
匹配hola
行中的文字h
。
header=hola; echo hola | awk -v header="$header" '/header/{print "Matched"}'