shell 裡 awk print 的用法詳解

2022-09-26 13:24:27 字數 3169 閱讀 1816

首先, 你需要先了解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 ...