Linux之三劍客

只記錄了常用的選項,需要查看更多選項請查看Linux命令大全

grep命令

grep是一種強大的文本搜索工具

選項

-A<顯示列數> 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容。
-b 在顯示符合範本樣式的那一行之外,並顯示該行之前的內容。
-C<顯示列數>或-<顯示列數> 除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。
-E 將範本樣式爲延伸的普通表示法來使用,意味着使用能使用擴展正則表達式。
-i 忽略字符大小寫的差別。
-v 反轉查找。
-w 只顯示全字符合的列。
-o 只輸出文件中匹配到的部分。

grep常見用法

在一個文件中搜索包含“match_pattern”的文本行:

grep match_pattern file_name
grep "match_pattern" file_name

在多個文件中查找:

grep "match_pattern" file_1 file_2 file_3 ...

輸出除之外的所有行 -v 選項:

grep -v "match_pattern" file_name

使用正則表達式 -E 選項:

grep -E "[1-9]+"

sed命令

sed 是一種流編輯器

sed替換標記

g 表示行內全面替換。
p 表示打印行。
w 表示把行寫入一個文件。
x 表示互換模板塊中的文本和緩衝區中的文本。
y 表示把一個字符翻譯爲另外的字符(但是不用於正則表達式)
\1 子串匹配標記
& 已匹配字符串標記

sed元字符集

^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。
. 匹配一個非換行符的任意字符,如:/s.d/匹配s後接一個任意字符,最後是d。
* 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格後緊跟sed的行。
[] 匹配一個指定範圍內的字符,如/[ss]ed/匹配sed和Sed。
[^] 匹配一個不在指定範圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
(…) 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替換成lovers。
< 匹配單詞的開始,如:/<love/匹配包含以love開頭的單詞的行。
> 匹配單詞的結束,如/love>/匹配包含以love結尾的單詞的行。
x{m} 重複字符x,m次,如:/0{5}/匹配包含5個0的行。
x{m,} 重複字符x,至少m次,如:/0{5,}/匹配至少有5個0的行。
x{m,n} 重複字符x,至少m次,不多於n次,如:/0{5,10}/匹配5~10個0的行。

sed用法實例

替換文本中的字符串:

sed 's/book/books/' file
-n選項和p命令一起使用表示只打印那些發生替換的行:
sed -n 's/test/TEST/p' file

直接編輯文件選項-i,會匹配file文件中每一行的第一個book替換爲books:

sed -i 's/book/books/g' file
使用後綴 /g 標記會替換每一行中的所有匹配:
sed 's/book/books/g' file
當需要從第N處匹配開始替換時,可以使用 /Ng:
echo sksksksksksk | sed 's/sk/SK/2g'

刪除操作

刪除空白行
sed '/^\$/d' file
刪除文件的第2行
sed '2d' file
刪除文件的第2行到末尾所有行
sed '2,\$d' file
刪除文件最後一行:
sed '\$d' file
刪除文件中所有開頭是test的行:
sed '/^test/'d file

已匹配字符串標記&

正則表達式 \w+ 匹配每一個單詞,使用 [&] 替換它,& 對應於之前所匹配到的單詞:
echo this is a test line | sed 's/\w\+/[&]/g'
[this] [is] [a] [test] [line]

打印奇數行或偶數行

方法1:
sed -n 'p;n' test.txt #奇數行
sed -n 'n;p' test.txt #偶數行
方法2:
sed -n '1~2p' test.txt #奇數行
sed -n '2~2p' test.txt #偶數行

awk命令

awk是一種處理文本文件的語言,是一個強大的文本分析工具

基本結構

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
一個awk腳本通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊3部分組成,這三個部分是可選的。

內置變量(預定義變量)

FS 字段分隔符(默認是任何空格)。
NF 表示字段數,在執行過程中對應於當前的字段數。
NR 表示記錄數,在執行過程中對應於當前的行號。
OFS 輸出字段分隔符(默認值是一個空格)。
ORS 輸出記錄分隔符(默認值是一個換行符)。
RS 記錄分隔符(默認是一個換行符)。

基本用法

用法1
#行匹配語句 awk ‘’ 只能用單引號
awk '{[pattern] action}' {filenames}
用法2
#-F相當於內置變量FS, 指定分割字符
awk -F
用法3
awk -v # 設置變量
用法4
awk -f {awk腳本} {文件名}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章