Linux Shell Scripting Cookbook 讀書筆記 5

 

sed,awkblog

1. sed (string editor)get

使用-i能夠將結果運用於原文件string

sed 's/text1/text2/' file > newfileit

mv newfile fileawk

其實能夠使用 sed -i 's/text1/text2/' file 搞定變量

若是加後綴g表示所有替換,不加只會替換每行的第一處匹配sed

使用Ng選擇從第幾處開始匹配,第二個例子是爲了說明不管使用/或者|或者其餘什麼字符,都是能夠用做定界符的file

移除空白行command

sed '/^$/d'  # /pattern/d或移除匹配到的行,注意沒有s了im

用&表示匹配到的內容,而且\d在sed命令中不支持。。

第二個例子,用\1 \2分別標記以前括號裏pettern匹配到的內容

若是須要對sed中的內容求值,能夠使用雙引號

 

2. awk

awk一般由BEGIN,END和可以使用模式匹配的通用語句塊三個部分組成,這三個部分都是可選的,腳本一般包含在雙引號或者單引號中

1)執行BEGIN

2)讀取stdin中的一行,而後執行pattern中的語句塊,重複這個過程,直到文件讀完;

    這個例子中沒有提供pattern,則認爲每一行都是匹配的

3) 執行END

awk中的print使用

1. print的參數以逗號分隔時,打印出來的參數以空格做爲定界符

2. 雙引號當作拼接操做符

echo在這裏的做用是輸入一行,使得awk只執行一次

特殊變量

NR: 表示記錄數量(number of rows),在執行中對應於當前行號

NF: 表示字段數量(number of fields),在執行過程當中對應於當前行的字段數

$0: 表示執行過程當中,當前行的內容

$1: 第一個字段的文本內容

$2: 第二個字段的文本內容

-v選項將外部變量(非來自stdin)傳遞給awk

從文件傳輸變量

getline讀取某一行

例如跳過第一行

指定樣式

設置定界符

或者awk -F: '{print $NF}' /etc/passwd

經過getline讀取外部命令輸出到變量output

"command" | getline output

相關文章
相關標籤/搜索