awk例子解釋,引入環境變數

2022-06-26 18:27:11 字數 1135 閱讀 2388

以下為網上乙個帖子的需求

作業系統為aix,日誌檔案比較大,我想從乙個日誌檔案中取出乙個關鍵字的第一次出現和最後出現之間的資訊,如下:

檔案:1.log

abc abc abcabc

abc lzjabc abcabc

abcabc abc abcabc abclzj

abcabc abc

abcabcabc abc abc

abc lzj abc abc

abcabc

對   awk '/lzj/p' 1.log  的解釋

1.  /lzj/ 正規表示式逐行匹配含有lzj的行,匹配到第一行的時候執行/lzj/後面第乙個花括號的內容;由於被匹配,執行結果是print s$0  此時s為新變數且為空,而且s和$0之間沒有逗號,類似print$0$1效果,實際結果為print$0,在讓p=1,p為真,再把s變數置空,next跳過p' **段;

2,緊接著上面被匹配的下一行,如果仍然匹配,則如同1的執行效果,如果不匹配,及不包含lzj,/lzj/為假,/lzj/後第乙個花括號/不執行,但是執行p' 沒有print (這裡類似path=/opt/software/bin:$path),由於p一直為真,一直持續到下一次/lzj/被匹配

3,承接上面,未被匹後的下一次匹配。首先print出s,這裡的s為之前所有未被匹配的行,再print改匹配的行$0,即為print s$0的解釋,然後置空s,後面next,跳過p之後的**段,雖然p為真,s儲存之後的為匹配的行,但是如果之後一直沒有/lzj/,此後便不再執行print動作。

另外p的作用是控制第一次print,如果不控制後面'段的執行條件,則會一直執行,因為就算為被匹配,但是未被匹配的行被s變數通過apend的方式追加,直到下一次遇到/lzj/,則會一次性把之前的s  print出來

引入環境變數

d=2018-09-03;kubectl logs mscshuta-6zf23 |awk  '/'$d'/'

for i in `kubectl get pod | awk ''|grep -v name`

do kubectl logs $i | awk '/^[\^]?'$(date -d "-1 day" +%f)' /p' > /root/logs/$(date -d "-1 day" +%f)-$i

done

Windows 系統環境變數解釋

在dos輸入 set 而不加引數,可以顯示windows當前的環境變數。windows 系統環境變數列表 allusersprofile 列出所有使用者profile檔案位置。列出應用程式資料的預設存放位置。cd 列出當前目錄。clientname 列出聯接到終端服務會話時客戶端的netbios名。...

awk中使用shell的環境變數

原文摘自 一 var 這種寫法大家無需改變用 括起awk程式的習慣,是老外常用的寫法.如 var test awk begin 這種寫法其實際是雙括號變為單括號的常量,傳遞給了awk.如果var中含空格,為了shell不把空格作為分格符,便應該如下使用 var this is a test awk ...

U Boot環境變數的解釋說明

u boot環境變數的解釋說明 環 境 變 量 解 釋 說 明 bootdelay 定義執行自動啟動的等候秒數 baudrate 定義串列埠控制台的波特率 netmask 定義乙太網介面的掩碼 ethaddr 定義乙太網介面的mac位址 bootfile bootargs 定義傳遞給linux核心的...