awk引用shell變數

wang_0720發表於2013-11-06
shell中的變數在awk程式中無法直接使用,因為在執行AWK時,是一個新的程式去處理的,這時就需要-v 引數來向awk程式中傳引數。
#!/usr/bin/bash
for code in `cat /tmp/article_summary.txt|awk -F "\t" '{print$1}'`;do
        row=`cat /tmp/article_summary.txt|grep -w "${code}"`
        awk -F "\t" -v code="${code}" -v row="${row}"  '{if($1 == code)print "\t"$0;else print row}' /tmp/article_result.txt
done
awk使用-v引數從shell中獲取變數,增加一個引數就多加一個-v,例如:-v code="${code}" -v row="${row}"。如果引數中有特殊字元,引用時要加雙引號,例如:"${code}","${row}"。awk中定義的變數在後續的使用中不需加“$”,可以直接使用例如:if($1 == code)print "\t"$0;else print row。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27181165/viewspace-775819/,如需轉載,請註明出處,否則將追究法律責任。

相關文章