linux正則
❶ linux命令行大全:什麼是正則表達式
前面我們已經接觸過命令行提供的許多特性和工具,並且也遇到過一些相當神秘的shell特性及命令,比如shell擴展和引用、鍵盤快捷鍵和命令歷史記錄等,更不用提vi編輯器了。正則表達式也延續了這種傳統,而且可以說是眾多特性中最神秘的一個(該說法應該會持有爭議)。當然,並不是說這些特性不值得大家花時間去學習。恰恰相反,熟練掌握這些用法會給人意想不到的效果,盡管它們的全部價值可能不會立即體現出來。
❷ linux中 正則表達式和通配符的區別
通配符
它是由shell解析,並且一般用於匹配文件名,實際上就是shell解釋器去解析的特殊符號,linux系統通配符有幾下幾種:
*:匹配任意多個字元
?:匹配任意一個字元
[...]:匹配中括弧內出現的任意一個字元
[!...]:不匹配中括弧內出現的任意一個字元
一般出現在要shell命令或腳本中,匹配特定的文件名
正則表達式
它是一個字元匹配標准,一些命令工具按此標准實現字元匹配,根據命令支持的匹配功能可分為基礎正則表達式和擴展正則表達式,常用於支持正則表達式的工具,如sed,grep,awk...
有如下一些常用的匹配元字元:
字元匹配
.:匹配任意單個字元
*:匹配其前面一個字元出現任意次
?:匹配其前面的字元1次或0次
+:匹配其前面一個字元出現至少一次(在擴展正則表達式中)
位置匹配
^:錨定行首
$:錨定行尾
\<或\b:錨定詞首,其後面的任意字元必須作為單詞首部出現
\>或\b:錨定詞尾,其前面的任意字元必須作為單詞尾部出現
\B:非單詞的開頭或結尾
^$:空白行
分組() :
(ab)* : 匹配ab這個分組出現任意次
\1:引用第一個左括弧以及與之對應的右括弧所包括的所有內容,同理還有\2,\3
特殊子字元類:
[:alnum:] :任何字母和數字
[:alpha:] :任何字母
[:cntrl:] :控制字元. 在ASCII表中對應八進制000 到 037, 和177 ('DEL').
[:digit:] :任何數字
[:graph:] :匹配列印字元,相當於'[:alnum:]' +'[:punct:]'.
[:lower:] :小寫字母
[:print:] :可列印字元,相當於 '[:alnum:]', '[:punct:]', 和space.
[:punct:] 標點符號,'! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ' { | } ~'
[:space:] 空白字元,tab, newline, vertical tab, form feed, carriage return, and space.
[:upper:] 大寫字母
[:xdigit:] 任何16進制的數字,相當於[0-9a-fA-F]
所以:^[[:space:]]*$ :匹配沒有任何內容的行
需要注意:[]中的特殊字元如.已經失去了其特殊含義,和方括弧中的普通字元[abc]一樣。
❸ Linux的正則表達式問題。
你好,沒有學過LINUX的正則,不過正則表達式,一般都相近,可能會有一些小差別。我可以用javascript的正則式表達上面兩個問題,希望對你有幫助:
1
❹ linux正則表達式
sed 's/#.*$//g' 把#開頭的行替換成空行
sed '/^$/d' 把空行刪掉
s是替換
g是指替換掉所有符合條件的
d是刪除
^行的開頭
$行的結尾
.除 "\n" 之外的任何單個字元
*前面的子表達式零次或多次
❺ linux正則表達式 ;s/^[ \t]*//是什麼意思
s/ro.swversion=// 是將ro.swversion刪掉
s/^[ \t]* 是將這一行起始的空白字元刪掉
s/[ \t].*//' 是將空白及以後的內容刪掉
比如:
字元串 ' hello ro.swversion ok'
做上面的處理後,結果就是hello
❻ linux ls正則表達式
ls就是默認排序的。
所以:
ls只支持通配符,不支持正則,所以單純用ls是不能實現的。
一些正則過濾操作需要結合支持正則的命令如grep、sed或awk。
例如:ls | grep "[0-9]$"
得到:aaa1 aaa2 aaa3
❼ Linux正則表達式
((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))
IP正則
❽ linux裡面,\d 是不是正則表達式的元字元
grep
root
/etc/*
*此是通配符,不是正則表達式
sed
's/
*/
/g'
file
在sed或者awk就是採用正則表達式來匹配,正則裡面.表達任意字元*表示重復前面0次或多次,所以.*代表匹配任意字元
什麼情況下該用,這個要憑經驗,一般sed
awk
grep
這三個命令使用正則
grep
"[^a-z]*"
aa.txt
grep像這樣用就是正則表達式
❾ 關於linux的正則表達式
\? 是轉義,表示0個或多個。
❿ linux find 正則表達式
1:
find 0?
0?代表的是要查找的路徑, 意思是在0?這個路徑下查找. bash的?匹配任意一個字元,這里0?匹配到了01和0s. 在01和0s下查找文件,返回了01 0s.
2:
find 0.
在0.下查找,bash里.就是字元'.' ,因為沒有0.這個文件, 所以報上面的錯誤.
3.
find ./ -regex "0."
在當前目錄查找匹配正則0.的文件, -regex的正則"0." 使用的是emacs的正則, 匹配0後面跟一個字元. 錯誤是在於-regex的正則表達式必須匹配整個路徑, 文件名前的路徑"./"也需要匹配. 可以這樣寫
find ./ -regex "./0."