一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

awk正則表達(dá)式中調(diào)用ksh變量

 淡水魚蝦 2011-04-26
awk正則表達(dá)式中調(diào)用ksh變量 收藏
如果ksh中定義了變量pcname,而在嵌入ksh中的awk程序中又要使用這個環(huán)境變量,并且用它在正則表達(dá)式中,該如何用它呢?
最簡單的方法就是:
view plaincopy to clipboardprint?
#!/bin/ksh  
pcname="ap201" 
nawk '/'"$pcname"'/{print $2}' $FILE 
#!/bin/ksh
pcname="ap201"
nawk '/'"$pcname"'/{print $2}' $FILE
更多方法,參見下面轉(zhuǎn)載的《AWK 使用 Shell 變量》一文:
最近閑著沒事,想寫個Shell腳本,其中用到了 AWK。想在AWK中讀取/設(shè)置Shell腳本中定義的變量,搜索些資源,總結(jié)了一些東東。
讀取變量
在通過如下方式讀取Shell變量
1> awk -v varName=varValue '...' ...
2> awk '...{print "'"${USER}"'"}' ...
   此種方式可以訪問系統(tǒng)環(huán)境變量(如USER等),和自定義Shell變量。若這些變量中沒有空格及其他特殊字符,則可以少寫兩個雙引號:awk '...{print "'${USER}"}' ...
3> awk '...{print ENVIRON["USER"]}...' ...
   但是這種方法只能訪問系統(tǒng)變量
設(shè)置變量
在AWK中尚未找到設(shè)置Shell變量的方法,因為像上面的讀取的方法中,一旦awk開始執(zhí)行,這些環(huán)境變量都是一個副本,無論處理多少條記錄,不管主Shell中如何變化,所引用的這些變量值都保持不變。而且,通過下面的實驗可以看出來,在AWK中執(zhí)行system函數(shù)調(diào)用命令是另起一個Shell線程,所以無法依靠system來設(shè)置外部環(huán)境變量。
如果你的AWK只打印一條結(jié)果的話,可以使用如下方式在shell環(huán)境中設(shè)置變量
   myVar="`echo | awk '{print "AA\nBB\nCC"}'`"
注意,這種方式在awk打印多行情況下會將回車用空格替代后賦值。

實驗過程如下:
$ vi tmp.sh
// 編輯內(nèi)容如下
view plaincopy to clipboardprint?
#!/bin/bash  
echo  
echo "SHELL VERSION : ${SHELL} ${BASH_VERSION}" 
echo "AWK VERSION : `awk -W version | sed -n '1p'`" 
echo  
myVar="AAA BBB CCC DDD" 
echo "IN SHELL : PID=$" 
echo "IN SHELL : \${myVar}=\"${myVar}\"" 
echo  
echo | awk -v var1="${myVar}" '{  
    print "IN AWK : how to print single quote : " "'""'"'"'"   
    print "No." NR  
    print "IN AWK : -v : var1=\"" var1 "\"" 
    print "IN AWK : get : ENVIRON[\"USER\"]=\"" ENVIRON["USER"] "\"" 
    print "IN AWK : get : ENVIRON[\"myVar\"]=\"" ENVIRON["myVar"] "\"" 
    print "IN AWK : get : ${USER} =\"" "'""'"${USER}"'" "\""   
    print "IN AWK : get : ${myVar}=\"" "'""'"${myVar}"'" "\""   
    print 
    system("echo \"IN AWK : system() : PID=$\"")  
}'   
myVar="`echo | awk '{print "AA\nBB\nCC"}'`" 
#\n is replaced by space character  
echo ${myVar} 
#!/bin/bash
echo
echo "SHELL VERSION : ${SHELL} ${BASH_VERSION}"
echo "AWK VERSION : `awk -W version | sed -n '1p'`"
echo
myVar="AAA BBB CCC DDD"
echo "IN SHELL : PID=$"
echo "IN SHELL : \${myVar}=\"${myVar}\""
echo
echo | awk -v var1="${myVar}" '{
    print "IN AWK : how to print single quote : " "'"'"'"
    print "No." NR
    print "IN AWK : -v : var1=\"" var1 "\""
    print "IN AWK : get : ENVIRON[\"USER\"]=\"" ENVIRON["USER"] "\""
    print "IN AWK : get : ENVIRON[\"myVar\"]=\"" ENVIRON["myVar"] "\""
    print "IN AWK : get : ${USER} =\"" "'"${USER}"'" "\""
    print "IN AWK : get : ${myVar}=\"" "'"${myVar}"'" "\""
    print
    system("echo \"IN AWK : system() : PID=$\"")
}'
myVar="`echo | awk '{print "AA\nBB\nCC"}'`"
#\n is replaced by space character
echo ${myVar}
$ . tmp.sh
//輸出結(jié)果如下
view plaincopy to clipboardprint?
SHELL VERSION : /bin/bash 3.2.25(1)-release  
AWK VERSION : GNU Awk 3.1.5 
IN SHELL : PID=10627 
IN SHELL : ${myVar}="AAA BBB CCC DDD" 
IN AWK : how to print single quote : '   
No.1 
IN AWK : -v : var1="AAA BBB CCC DDD" 
IN AWK : get : ENVIRON["USER"]="zhangll" 
IN AWK : get : ENVIRON["myVar"]=""  
IN AWK : get : ${USER} ="zhangll" 
IN AWK : get : ${myVar}="AAA BBB CCC DDD" 
IN AWK : system() : PID=17468 
AA BB CC 
 
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/bonny95/archive/2010/07/17/5742008.aspx

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    粉嫩一区二区三区粉嫩视频| 亚洲精品中文字幕在线视频| 成年人黄片大全在线观看| 男女午夜在线免费观看视频| 高清一区二区三区不卡免费| 亚洲av首页免费在线观看| 国产在线不卡中文字幕| 午夜精品一区二区av| 可以在线看的欧美黄片| 国产又粗又猛又长又黄视频| 国产不卡免费高清视频| 好吊视频一区二区在线| 欧美日韩亚洲国产av| 熟女高潮一区二区三区| 亚洲欧美日本国产不卡| 91精品蜜臀一区二区三区| 欧美精品激情视频一区| 久热这里只有精品九九| 亚洲国产欧美久久精品| 婷婷色香五月综合激激情| 三级高清有码在线观看| 亚洲清纯一区二区三区| 色婷婷视频国产一区视频| 国产福利一区二区三区四区| 加勒比系列一区二区在线观看| 日韩无套内射免费精品| 亚洲中文字幕在线观看黑人| 亚洲天堂精品1024| 欧美一区二区在线日韩| 91蜜臀精品一区二区三区| 亚洲天堂精品在线视频| 成人午夜在线视频观看| 亚洲精品小视频在线观看| 欧美日韩精品人妻二区三区| 久久精品欧美一区二区三不卡| 男女激情视频在线免费观看| 日本精品免费在线观看| 亚洲人妻av中文字幕| 午夜小视频成人免费看| 国产男女激情在线视频| 正在播放玩弄漂亮少妇高潮|