linux 基礎7 正規表示式

2022-08-31 07:57:10 字數 3380 閱讀 6791

在萬用字元*是0-無限個字元,?是乙個字元;在正規表示式中是0-無限個字元前乙個相同字元。.乙個前乙個相同字元

grep '^[a-z]' greptest #搜尋以a-z開始的行

grep '!$' greptest #搜尋以!結尾的行

grep '\.$' greptest #搜尋以.結尾的行,需要加入轉義

grep 'g..d' greptest #.只代表乙個字元

grep 'goo*g' greptest #*代表重複前面0個或者多個字元

grep '[.!]$' greptest #以.!結尾的行

grep '[^.!]$' greptest #不以.!結尾的行'

grep 'go\g' greptest #以g開頭,2個o和g結尾的行

grep 『go\』 greptest #以g開頭2到5個o的行

grep 'go\g' greptest #以g開頭,2個以上的o,以g結尾的行

ls -l ip?

ls -l ip*

?:上乙個執行命令所返回值,如果執行正確返回值為0,錯誤返回值非0

$:表示當前shell的程序號(pid)

echo $?

echo $$

sed是乙個非互動文字編輯器,必須通過行號或正規表示式制定需要改變的行

sed如何讀取資料:sed從檔案的乙個文字行或者從標準輸入讀取資料,將讀取的資料拷貝到乙個編輯緩衝區,然後讀命令列或者指令碼的第一條命令,並使用這些查詢模式或者定位行號來編輯它。重複此過程直到命令結束。

cat -n greptest | sed '2a this line is added'

cat -n greptest | sed '2i this line is inset'

cat -n greptest | sed '2,3c this line is 2,3 replace'

cat -n greptest | sed '2,8d'

cat -n greptest | sed '2a this line is book'

cat -n greptest | sed '2a this line is book' > greptestd #用資料流重導向可以改變原始檔

cat -n greptest | sed '1,8p'

cat -n greptest | sed '$p' #顯示最後一行

cat -n greptest | sed 's /is//is/'#把is替換為is

cat -n greptest | sed 's /is//is/g'#把is替換為is,全域性替換

可以對照1.1來比對。

sed -n '^/a-z/'p greptest

sed -n '^/!$/'p greptest

sed -n '/g..d/'p greptest

sed -n '/too*/'p greptest

sed -n '/\.$/'p greptest

sed -n '/go\g/'p greptest

sed -n '/go\g/'p greptest

sed -n '2,/is/'p greptest

sed -n '1,/is/'p greptest #第一行不會匹配

sed -n '/good/=' greptest

cat -n greptest | sed '/good/ a add a line in the next line'

cat -n greptest | sed '/good/ i add a line in the before line'

cat -n greptest | sed '/good/ a add a line in the next line'

sed -n '/glad/=' -e '/glad/p' greptest

sed -n '/glad/=';'/glad/p' greptest

sed -n '

>/glad/=

>/glad/p』 greptest

sed -e 's/is/is/' -e 's/am/was/' greptest

sed -e 's/is/is/g';'s/am/was/' greptest

sed '

>s/is/is/g

>s/am/was/' greptest

#!/bin/sed -f

/good/ a\

chmod u+x tst.sed

./tst.sed

sed 's/is/is/gw greptest' greptest

sed '1g' greptest

sed '/good/g' greptest

sed -n 's/great/man &/' greptest

如果設定了-f選項,則awk每次讀一條記錄或一行,並使用制定的分隔符分隔指定域,如果沒有設定,awk則嘉定空格為域分隔符。

awk 'begin  end' filename

awk '$0~/good/' greptest

awk 'if($0~/good/) print $0' greptest

awk 'if($0~/^[^a-za-z]/) print $0' greptest

awk 'if($0~/!$/) print $0' greptest

awk 'if($0~/g..d/) print $0' greptest

awk 'if($0~/goo*/) print $0' greptest

awk 'if($0~/good|glad/) print $0' greptest #|是或的意思

awk 'if($0~/g00+/) print $0' greptest

awk 'if($0~/g00?/) print $0' greptest

awk '' greptest

awk 'end' greptest

awk 'beginend' greptest

awk 'gsub("good","good")' greptest

正規表示式 1 正規表示式基礎

1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...

正規表示式基礎

限定符 d 匹配非負整數 正整數 0 0 9 1 9 0 9 匹配正整數 d 0 匹配非正整數 負整數 0 0 9 1 9 0 9 匹配負整數 d 匹配整數 d d 匹配非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 匹配正浮點數 d...