文字處理三劍客(grep sed wak)

2021-09-29 01:21:06 字數 4217 閱讀 9533

重在查詢

-a或 --text : 不要忽略二進位制的資料。

-a《顯示行數》 或 --after-context=《顯示行數》 : 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。

-b或 --byte-offset : 在顯示符合樣式的那一行之前,標示出該行第乙個字元的編號。

-b《顯示行數》 或 --before-context=《顯示行數》 : 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。

-c 或 --count : 計算符合樣式的列數。

-c《顯示行數》 或 --context=《顯示行數》或-《顯示行數》 : 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。

-d《動作》 或 --directories=《動作》 : 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。

-e《範本樣式》 或 --regexp=《範本樣式》 : 指定字串做為查詢檔案內容的樣式。

-e或 --extended-regexp : 將樣式為延伸的正規表示式來使用。

-f《規則檔案》 或 --file=《規則檔案》 : 指定規則檔案,其內容含有乙個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行乙個規則樣式。

-f或 --fixed-regexp : 將樣式視為固定字串的列表。

-g或 --basic-regexp : 將樣式視為普通的表示法來使用。

-h或 --no-filename : 在顯示符合樣式的那一行之前,不標示該行所屬的檔名稱。

-h或 --with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的檔名稱。

-i或 --ignore-case : 忽略字元大小寫的差別。

-l或 --file-with-matches : 列出檔案內容符合指定的樣式的檔名稱。

-l或 --files-without-match : 列出檔案內容不符合指定的樣式的檔名稱。

-n或 --line-number : 在顯示符合樣式的那一行之前,標示出該行的列數編號。

-o或 --only-matching : 只顯示匹配pattern 部分。

-q或 --quiet或–silent : 不顯示任何資訊。

-r或 --recursive : 此引數的效果和指定"-d recurse"引數相同。

-s或 --no-messages : 不顯示錯誤資訊。

-v或 --revert-match : 顯示不包含匹配文字的所有行。

-v或 --version : 顯示版本資訊。

-w或 --word-regexp : 只顯示全字符合的列。

-x--line-regexp : 只顯示全列符合的列。

-y: 此引數的效果和指定"-i"引數相同。

-e 以選項中指定的script來處理輸入的文字檔案。

-f-n或–quiet或–silent 僅顯示script處理後的結果。

-v或–version 顯示版本資訊。

動作說明:

a :新增,a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~

c :取代,c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

d :刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;

i :插入,i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

p :列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起執行~

s :取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 『g』:代表全域性。

awk同時也是一門程式語言,也有變數、陣列、判斷、迴圈等語法,awk內建了很多實用函式

重點:列處理、列過濾

awk簡單使用,缺省會使用空白字元隔成一列一列的

選項引數說明:

awk內建變數:

$0 整行

$1 第一列

$2 第二列

$n 第n列

$nf 最後一列 cat 目錄 |awk 『』

nr 當前處理到第幾cat 目錄 |awk 『』

awk針對列過濾,整數比較:

number1 > number2

number1 < number2

number1 == number2

number1 >= number2

number1 <= number2

字串比較:

cat /tmp/jsetc |awk 『$3 == 「hangzhou」』 #字串對比

cat /tmp/jsetc |awk 『$3 != 「hangzhou」』

awk針對列過濾,使用正則

cat /tmp/jsetc |awk 『$3 ~ /sh/』 #字串正則

cat /tmp/jsetc |awk 『$3 ~ /(sh)|(hang)/』 #支援擴充套件正則 |: 或

引數awk [option] 『』 # sometims muti file is ok

awk [option]'begin end』 filename

begin{}大括號裡: 只執行一次,在文字處理開始前執行

{}大括號裡: 針對每一進行處理

end{}大括號裡: 只執行一次,在文字處理結束後執行

begin可以用來做浮點數運算

awk 『begin』

例:計算檔案大小:

$ ls -l .txt | awk ' end 'v

從檔案中找出長度大於80的

awk 『length>80』 log.txt

列印99乘法表:

seq 9 | sed 『h;g』 | awk -v rs=』』 『』

awk使用-f指定分隔符

預設分隔符是以多個空白字元作為分隔:空格、tab

-f引數可指定分隔符,後面跟正規表示式,支援擴充套件正則

#awk -f 『:』 指定單個分隔符

#awk -f 『[;:]』 或 『;|:』 指定多個分隔符

awk多個單字元分隔

cat /tmp/jsetc |awk -f』[:;]』 『』

cat /tmp/jsetc |awk -f』: |;』 『』

awk支援多字元分隔

cat /tmp/jsetc |awk -f 『:+|;』 『』

awk傳參

cat /tmp/jsetc |awk -v age=30 『$2>age』

cat /tmp/jsetc |awk -v age1=20 -v age2=34 『$2>age1 && $2shell關聯陣列支援用字串為索引

declare -a info

info[『name』]=「jsetc」

info[『age』]=28

echo $

echo $

awk迴圈語法

for(i in 陣列變數)

正規表示式:

#輸出第二列包含 「th」,並列印第二列與第四列

$ awk 『$2~/th/ 』 log.txt ~ 表示模式開始。// 中是模式。

#輸出包含"re" 的行

$ awk 『/re/』 log.txt

忽略大小寫:

awk 『begin /this/』 log.txt

文字處理三劍客

文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...

linux文字處理三劍客

常用引數 v 顯示不能夠被匹配到的行 i 忽略大小寫字元 o 僅顯示匹配到的字串 q 靜默模式,不輸出任何資訊 a 後 行 b 前 行 c 前後各 行 e 使用ere,相當於egrep常用引數 n 只列印模式匹配的行 e 直接在命令列模式上進行sed動作編輯,此為預設選項 f 將sed的動作寫在乙個...