awk if語句
C語言中用system() 執行shell命令:system("shell命令")主要需要解釋的是awk,awk主體中的語法其實與C類似,只不過其中用到了正則匹配。
格式:awk '' 文件backbone.c就是awk要處理的文件。$0~/^\\/\\*\\*/ :格式:$0 ~ /正則表達式/作用:判斷$0是否匹配正則表達式 ^\\/\\*\\*含義:awk是逐行讀入并處理的,$0代表整行數據; 正則表達式中 ^ 表示一行的開頭,斜杠前要加轉義符以免被認為是正則表達式的定界符,*表示匹配0個或多個前面的字符。
總體來講,就是只處理backbone.c文件中匹配 /^\\/\\*\\*/ 的行與匹配 /\\*\\*\\// 的行中間的內容,并通過print打印到屏幕。
awk里面的if語句可不可以使用管線
可能不成立,你所謂的pipe取得內容是不能用上述方式傳入awk內的。
最簡單的辦法是用NR,FNR全部輸入兩個不同數組,然后用數組進行比較就好了;也可以用getline;以下為例程:awk '{ if(NR==FNR) array1[NR]=$0 else array2[FNR]=$0}END{ for(key1 in array1){ for(key2 in array2){ if(array2[key2] == array1[key1]) print "array2[key2] matched" } }}' file1 file2。
Shell awk命令嵌套if
awk '
{
if ($1==1)
print "A"
else if ($1==2)
print "B"
else
print "C"
}'
#命名為*
執行方法:echo "1" | sh *
寫成一行:
echo "3" | awk '{if ($1==1) print "A"; else if ($1==2) print "B"; else print "C"}'