awk一些常用基本方法詳解

2021-09-20 03:31:24 字數 2533 閱讀 1044

awk 引數 『模式』 檔案

awk 引數 『條件(找誰)』 檔案

常用: -f 指定分隔符 取列,預設空格為分隔符

awk正規表示式

符號表達含義

*與前面的正規表示式的零個或多個出現匹配

.匹配任何單個字元

\轉義隨後的特殊字元

+匹配前面的正規表示式的一次或多次出現

^作為正規表示式的第乙個字元,表示匹配行的開始,以什麼開頭

$作為正規表示式的最後乙個字元,表示匹配行的結尾

?匹配前面的正規表示式的零次或一次出現

匹配它前面某個範圍內單個字元出現的次數,將匹配n次出現,至少匹配n次出現,匹配n和m之間的任意次出現

- awk -f":" ''  /etc/passwd    $1與$3之間手動新增空格分隔

- awk '/ljc/' file 顯示檔案file中包含ljc的匹配行。

- awk '!/ljc/' file 顯示檔案file中不包含ljc的匹配行。

- awk '/起始內容/,/終止內容/' file 取包含內容的區間行區間匹配

- awk '/halt|sync/' file 匹配halt或者sync的行

- awk 'nr>=5 && nr<=10' file 取5到10行,邏輯與

- awk -f: '$1~/mail/ || $3>1 ' /ljc 取$1或者mail或者$3>1的行,邏輯或

替換但不修改檔案內容:

gsub(/目標/,"替換為什麼",第幾列)

gsub(/目標/,"替換為什麼") == gsub(/目標/,"替換為什麼",$0)

例:[root@ljc ~]# awk 'gsub(/halt/,"tihuang")' liangjc.txt

end{} 模組awk讀取檔案之後執行,先計算,最後end{}顯示結果

例1:分析access.log中每個ip位址出現的次數

[root@ljc~]# awk  'end' access.log|sort -rnk2|head|column -t

58.220.223.62 12

112.64.171.98 14

114.83.184.139 122

i=i+$10  ===   i+=$10

[root@ljc~]# awk 'end' access.log |sort -rnk2|head |column -t

114.83.184.139 29.91mb

117.136.66.10 21.3922mb

116.216.30.47 20.4716mb

例3:分析secure檔案中每個使用者被破解的次數:
破解root使用者的次數

[root@ljc~]# awk '/failedpassword/end' secure-20181219

3283

[root@ljc ~]# awk '/failedpassword/end' secure-20181219|sort-rnk2|column -t|head

218.65.30.25 68652

218.65.30.53 34326

例5:分析secure檔案中每個使用者被每個ip破解的次數
[root@ljc ~]# awk '/failedpassword/end' secure-20181219|sort -rnk3|column -t|head -20

root 218.65.30.25 68652

root 218.65.30.53 34326

root 218.87.109.154 21201

1)ip位址使用的流量總數

[root@ljc ~]#  awk 'end' access.log|column -t|sort-rnk2|head

114.83.184.139 29.9119mb

117.136.66.10 21.3937mb

2)ip位址的訪問次數

[root@ljc ~]#  awk 'end' access.log|column-t|sort -rnk2|head

58.220.223.62 12049

112.64.171.98 10856

3)每個ip位址的訪問次數與每個ip位址使用的流量總數

[root@ljc ~]# awk 'end' access.log|column -t|sort -rnk2|head

58.220.223.62 12049 12.0192mb

112.64.171.98 10856 14.5483mb

awk一些常用命令

awk filename 列印檔案的第一列 awk filename 列印檔案的第一列和第三列 awk filename 列印完第一列,緊接著列印第二列 awk end filename 列印檔案的行數 awk nr 1 filename 列印檔案的第一列 shell裡面的兩種賦值方式 1 arg ...

awk的一些用法

awk是個非常強大的乙個工具,在我看來位列三劍客之首,下面記錄一些非常好的用法 一 比較常用的是統計tcp的狀態 netstat n awk tcp end 二 awk呼叫外部命令 awk tt.txt 將檔案裡面的第二列作為使用者,第一列作為主目錄,此命令呼叫了useradd命令,可以批量建使用者...

一些常用公共方法

根據檔案字尾名獲取檔案的mime型別 檔案字尾名,如 jpg,gif 返回該檔案的mime型別,如 image gif return sresult 根據資料表的列名取的列的序號 列名 資料表 列號,沒有找到返回 1 public static int gettablecolindexbyname ...