Linuxshell程式設計之awk與sed使用詳解

2021-08-31 05:39:42 字數 1961 閱讀 4949

linux shell程式設計之awk的用法

1. awk的使用

基本功能:在檔案或字串中基於指定規則瀏覽和抽取資訊。awk抽取資訊後,才能進行其他文字操作。完整的awk指令碼通常用來格式化文字檔案資訊。

呼叫方式:

1. 命令列方式

2. 將所有awk命令插入乙個檔案,並使awk程式可執行,然後使awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。

3. 將所有的awk命令插入乙個單獨檔案,然後呼叫。

選項說明:-f 域符號 預設為空格

-f 指明awk指令碼

2. 模式和動作

1. 任何awk語句都由模式和動作組成。在乙個awk指令碼中可能有許多語句。

模式部分決定動作語句何時觸發及觸發事件。模式預設為執行狀態。

處理即對資料進行的操作。

2. 模式可以是任何條件語句或復合語句或正規表示式。

3. 模式包括兩個特殊欄位begin和end。

域和記錄

域標識:$1,$2,…,$n。用逗號做域分隔。$0表示所有域。

列印域或所有域:print命令

注:當碰到awk錯誤時,可相應查詢:

1. 確保整個awk命令用單引號括起來

2. 確保命令內所有引號成對出項

3. 確保用花括號括起動作語句,用圓括號括起條件語句

4. 不要忘記使用花括號

條件操作符

~ 匹配正規表示式

!~ 不匹配正規表示式

內建變數:

nf:每一條記錄中網域名稱數

是將變數$pwd的返回值傳入awk並顯示其目錄。

可以利用nf獲取檔名

注:但這裡指定域分隔符為/

nr:記錄個數

linux shell程式設計之sed用法

1. 是乙個非互動性文字流編輯器。它編輯檔案或標準輸入匯出的文字拷貝。

2. 通過行號或正規表示式指定要改變的文字行

3. sed不與初始檔案打交道,而只與它的乙個拷貝打交道,如果操作結果沒有重定向到乙個檔案,那麼將輸出到螢幕。

呼叫方式:

a. 命令列方式

b. 將sed命令插入指令碼檔案中,然後呼叫sed

c. 將sed命令插入指令碼檔案中,使得指令碼檔案為可執行。

儲存sed輸出

重定向到乙個新檔案 >

sed中定位文字的方式

x 一行號

x,y 行號範圍

/pattern/ 查詢包含模式的行

/pattern/pattern/ 查詢包含兩個模式的行

/pattern/,x 在指定行號上查詢匹配模式的行

x,/pattern/ 通過行號和模式查詢匹配行

x,y! 查詢不包含行號x,y的行

sed編輯命令

p 列印文字

匹配元字元$前,必須使用反斜線\

= 列印行號 使用-e選項

如果既列印行號又列印匹配行,必須使用兩個sed命令,並使用-e選項

附加文字

建立指令碼檔案,第一行為:

#!/bin/sed -f ----注 說明sed命令解釋行。指令碼在這一行查詢sed以執行命令,這裡定位在/bin

插入文字:在指定行前面插入,它也只接受乙個位址。

刪除文字:d

1. 使用s/-*//g刪除橫線-----

2. 使用/^$s/d刪除空行

3. 使用$d刪除最後一行

4. 使用1d刪除第一行

5. 使用awk列印第一列

linux shell程式設計之 if語句

一 語句格式 一行中的寫法 if test commands then consequent commands fi 多行的寫法 if 條件 then command else command fi 基本語法記住亮點 1 按照漢語的方式記憶 如果 if 那麼 then 就 否則 else 就 2 記...

Linux shell程式設計之awk sed用法詳解

awk的用法 1.awk的使用 呼叫方式 1.命令列方式 2.將所有awk命令插入乙個檔案,並使awk程式可執行,然後使awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。3.將所有的awk命令插入乙個單獨檔案,然後呼叫。選項說明 f 域符號 預設為空格 f 指明awk指令碼 2.模式...

LINUX SHELL程式設計之遠端拷貝

使用expect,進行遠端拷貝 1.首先確認你的系統安裝有expect which expect 如果顯示如下,說明已經安裝完expect,如果沒有執行2 usr bin expect 2.yum install expect 3.遠端拷貝 usr bin expect f set password...