首先, 你需要先了解awk 的工作原理:
1。awk讀取輸入檔案一次一行。
2。對於每一行,它匹配在給定的順序模式,如果匹配,執行相應的動作。
3。如果沒有模式匹配,將執行任何行動。
4。在上面的語法,無論是搜尋模式,或行動是可選的,但不能同時。
程式設計客棧5。如果沒有給出搜尋模式,然後awk要執行每一行輸入給定的行動。
6。如果沒有給出動作,列印,這是預設的操作與模式相匹配的所有行。 7。空出的任何行動括號什麼都不做。它不會執行預設的列印操作。
8。中的每個行動的宣告應該用分號分隔。讓我們建立employee.txt檔案,其中有
首先, 你需要先了解awk 的工作原理:
1。awk讀取輸入檔案一次一行。
2。對於每一行,它匹配在給定的順序模式,如果匹配,執行相應www.cppcns.com的動作。
3。如果沒有模式匹配,將執行任何行動。
4。在上面的語法,無論是搜尋模式,或行動是可選的,但不能同時。
5。如果沒有給出搜尋模式,然後awk要執行每一行輸入給定的行動。
6。如果沒有給出動作,列印,這是預設的操作與模式相匹配的所有行。
7。空出的任何行動括號什麼都不做。它不會執行預設的列印操作。
8。中的每個行動的宣告應該用分號分隔。
讓我們建立employee.txt檔案,其中有以下內容,這將是在使用
下文提到的例子。
$cat employee.txt
100 thomas manager sales $5,000
200 jason developer technology $5,500
300 sanjay sysadmin technology $7,000
400 nisha manager marketing $9,500
500 randy dba technology $6,www.cppcns.com000
awk的範例1。 awk的預設行為
預設情況下的awk列印檔案的每一行。
1234567
$ awk '' employee.txt
100 thomas manager sales $5,000
200 jason developer technology $5,500
300 sanjay sysadmin technology $7,000
400 nisha manager marketing $9,500
500 randy dba technology $6,000
在上面的例子中模式中沒有給出。因此,是適用於所有的行。
action與任何引數的列印輸出預設情況下,輸出整行.
awk的範例2。列印與模式匹配的行。
1234$ awk '/thomas/
> /nisha/' employee.txt
100 thomas manager sales $5,000
400 nisha manager marketing $9,500
在上面的例子,它列印的「thomas」或「nisha」匹配的所有行。它有兩種模式。
awk的範例3。只列印特定的字段。
awk有內建的變數。對於每乙個記錄,即行,分隔空白字元分隔記錄預設情況下,它儲存在$ n個變數。如果該行有個詞,它會被儲存在$ 1,2,2,2, 3和$ 4。 $0表示整行。 nf是乙個內建變數,它代表這一行有多少個被分隔的域.
12345678910111213$ awk '' employee.txt
thomas $5,000
jason $5,500
sanjay $7,000
nisha $9,500
randy $6,000
$ awk '' employee.txt
thomas $5,000
jason $5,500
sanjay $7,000
nisha $9,500
randy $6,000
awk 範例4. 初始化and final action
awk 兩個重要的pattern , 由關鍵詞 begin and end 標識
syntax:
begin
# action for everyline in a file
end
#is for comments in awk
這是乙個例子
12345678910111213
$ awk 'begin
>
> tawetrooend' employee.txt
name designation department salary
thomas manager sales $5,000
jason developer technology $5,500
sanjay sysadmin technology $7,000
nisha manager marketing $9,500
randy dba technology $6,000
report generated
--------------
在上面的例子,它列印出的報告和最後檔案的標題
awk的範例6。列印技術部門的雇員列表。
部門名稱現在是第四個字段,所以需要檢查與「techology」的字串,如果$4 匹配,則列印這一行
$ awk 『$4 ~/technology/' employee.txt
200 jason developer technology $5,500
300 sanjay sysadmin technology $7,000
500 randy dba technology $6,000
操作符〜是正規表示式比較。如果匹配的預設操作,即列印整行.
awk的範例7。列印在技術部門的雇員人數
下面的例子, 檢查 department 是否是technology, 如果是 則action中,只增加變數的計數. 這個變數在begin 中被初始化為0
$ awk 'begin
$4 ~ /technology/
end ' employee.txt
number of employees in tehcnology dept = 3
在end 中列印出這個變數,就是technology 部門的員工數目
總結
shell裡的while迴圈
while迴圈是不定迴圈,也稱作條件迴圈 只要條件判斷式成立,迴圈就會一直繼 續,直到條件判斷式不成立,迴圈才會停 止。while 條件判斷式 do程式 done 變數的初始值 while 條件表示式或者命令 do迴圈體 變數的更新 一定要做,否則死迴圈 done root sr18 151 vim...
shell裡for迴圈的幾種寫法
背景 for迴圈是常用的語法結構,shell裡的for迴圈與其它語言有些差別,這裡提供3個模板,以1 50的累加為例 指令碼內容如下 bin bash test.shell 1.列表for迴圈 中可以是乙個list sum 0 for i in do 迴圈開始 let sum i done 迴圈結束...
shell變數裡的字元替換
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!shell變數裡的字元替換 b 將 裡的第乙個123替換為321 b 將 裡的所有123替換為321 shell除錯 shell十三問 不過,假如你只看到 只能用來界定變數名稱的話,那你就實在太小看 bash 了 有興趣的話,你可先參考一下 cu ...