AWk的呼叫精華

2021-06-10 08:26:09 字數 2727 閱讀 8284

awk 的呼叫方式

awk 提供了適應多種需要的不同解決方案,它們是:

一、awk 命令列,你可以象使用普通unix 命令一樣使用awk,在命令列中你也可以使用awk 程式語言,雖然awk 支援多行的錄入,但是錄入長長的命令列並保證其正

確無誤卻是一件令人頭疼的事,因此,這種方法一般只用於解決簡單的問題。當然,你也可以在shell script 程式中引用awk 命令列甚至awk 程式指令碼。

二、使用-f 選項呼叫awk 程式。awk 允許將一段awk 程式寫入乙個文字檔案,然後在awk 命令列中用-f 選項呼叫並執行這段程式。具體的方法我們將在後面的awk 語法中講

到。#!/bin/awk -f

並賦予這個文字檔案以執行的許可權。這樣做之後,你就可以在命令列中用類似於下面這樣的方式呼叫並執行這段awk 程式了。

$awk     指令碼文字名   處理檔案

舉乙個簡單的例子:

==[23]==gaoke@dev64_23:~/code$cat host

#ip             hostname     port 

192.168.1.12    gaoke1         45

192.168.1.14    gaoke2         45

192.168.1.15    gaoke3         45

192.168.1.16    gaoke4         45

然後我要進行下邊的操作:

(1)獲得整個檔案的所有行:

==[23]==gaoke@dev64_23:~/code$awk '' host

#ip             hostname     port 

192.168.1.12    gaoke1         45

192.168.1.14    gaoke2         45

192.168.1.15    gaoke3         45

192.168.1.16    gaoke4         45

或者==[23]==gaoke@dev64_23:~/code$awk -f " " '' host

#ip             hostname     port 

192.168.1.12    gaoke1         45

192.168.1.14    gaoke2         45

192.168.1.15    gaoke3         45

192.168.1.16    gaoke4         45

(2)獲得整個檔案的第一列至第二列的內容

==[23]==gaoke@dev64_23:~/code$awk -f " " '' host

ip:#ip  hostname:hostname

ip:192.168.1.12  hostname:gaoke1

ip:192.168.1.14  hostname:gaoke2

ip:192.168.1.15  hostname:gaoke3

ip:192.168.1.16  hostname:gaoke4

(3)再次修改host檔案:

==[23]==gaoke@dev64_23:~/code$cat host

192.168.1.12    :gaoke1        :45

192.168.1.14    :gaoke2        :45

192.168.1.15    :gaoke3        :45

192.168.1.16    :gaoke4        :45

(4)再次只獲得每行冒號後邊的獲得的資料

==[23]==gaoke@dev64_23:~/code$awk -f ":" '' host

192.168.1.12    gaoke1        45

192.168.1.14    gaoke2        45

192.168.1.15    gaoke3        45

192.168.1.16    gaoke4        45

==[23]==gaoke@dev64_23:~/code$cat ff.awk

#!/bin/awk -f

begin

==[23]==gaoke@dev64_23:~/code$awk -f ff.awk host

192.168.1.12    :gaoke1        :45

192.168.1.14    :gaoke2        :45

192.168.1.15    :gaoke3        :45

192.168.1.16    :gaoke4        :45

==[23]==gaoke@dev64_23:~/code$cat ff.awk

#!/bin/awk -f

begin

==[23]==gaoke@dev64_23:~/code$awk -f ff.awk host

ip:192.168.1.12    hostname:gaoke1        port:45

ip:192.168.1.14    hostname:gaoke2        port:45

ip:192.168.1.15    hostname:gaoke3        port:45

ip:192.168.1.16    hostname:gaoke4        port:45

awk精華 新編

1 awk簡介 1.1什麼是awk nawk gawk awk是一種用於處理資料和生成報告的unix程式語言。nawk是awk的新版本,gawk是基於linux的gnu版本。1.2 awk介紹 最初編寫於1977年,1985年得以改進以支援更大的程式,還增加了可使用者自定義函式 動態正規表示式 同時...

awk 呼叫變數

一 用awk 有以下幾種方法去呼叫變數 1.awk a 111 b 222 yourfile 注意 變數位置要在 file 名之前,否則就不能呼叫。還有 於 begin 中是不能呼叫這些的 variable.要用之後所講的第二種方法才可解決.2.awk v a 111 v b 222 yourfil...

awk呼叫shell命令

awk可以用getline或system來呼叫shell的命令 1 getline 通過在awk內使用管道,可以把shell命令的輸出傳送給awk awk begin sun mar 8 22 21 52 2009 順便說一下getline的其他用法.getline除了可以通過管道從shell命令裡...