您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關awk單引號+shell變量+域變量的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
[rdb@mdb tmp]$ echo TOM | awk '{print "select * from A where name='\''''"$1"'\''"}'
select * from A where name='TOM'
[rdb@mdb tmp]$ echo TOM | awk '{print "select * from A where name='\''"$1"'\''"}'
select * from A where name='TOM'
[rdb@mdb tmp]$
兩者的name部分放大后為:
name=' \ ' ' ' ' " $1 " ' \ ' ' "
name=' \ ' ' " $1 " ' \ ' ' "
前者比后者在$1前雙引號前多了兩個單引號,但是為啥兩者的效果相同呢,我的理解是這兩個多出來的單引號內部沒有任何值,為空,所以效果一致,如果在該處多加幾個單引號也是一致的,例如:
echo TOM | awk '{print "select * from A where name='\''''''''''''''"$1"'\''"}'
在awk的print中引用拼接域變量時,該變量應該被雙引號引起來:
"$1"
然后要給該值加上單引號,每個單引號需要轉義,轉義規則為:兩個單引號,然后再在其內部加上\',完成后為:'\'',放大后為:' \' '
連起來就是:'\''"$1"'\''
這個就是第二個name=' \ ' ' " $1 " ' \ ' '
關于引用shell變量問題:
shell變量在awk中要被使用,需要用雙引號+單引號配合使用" '$a' "
例如:
[rdb@mdb tmp]$ a=10
[rdb@mdb tmp]$ echo 90|awk '{print ""$1"/"'$a'"="$1/"'$a'"}'
90/10=9
[rdb@mdb tmp]$
放大后為:echo 90|awk '{print " " $1 " / " '$a' " = " $1 / " '$a ' " }'
function getcmdstat_sql()
{
grep cmdstat_ 13_20170519102523.info_all|awk -F"[:=,]+" '{print "insert into tbl_rdb_cmdstats(dc_area,node_name,node_ip,chk_time,statname,total_calls,total_timing) values ('\'''${dc_area}''\'','\'''${1}''\'','\'''${2}''\'',to_date('\'''${fn_date}''\'','\''yyyy-mm-dd hh34:mi:ss'\''),'\''"$1"'\'','\''"$3"'\'',trunc('\''"$5"'\''/1000/1000);"}'>>/tmp/c.sql
}
getcmdstat_sql "$node_name" "$node_ip"
-F"[:=,]+"代表:,=,“,”冒號,等號,逗號都是分隔符
感謝各位的閱讀!關于“awk單引號+shell變量+域變量的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。