一.grep:文本過濾器
根據正則表達式來工作,由正則表達式或者字符及基本的文本字符所編寫的過濾條件
tr 'a-z' 'A-Z' < file ###把passwd中的小寫轉換爲大寫
^x ###以x開頭的
x$ ###以x結尾的
-v ###反選
grep nologin$ -v passwd ###顯示能登陸的用戶
-E ^root|root$ ###root在開頭的或者在結尾的,|或運算時擴展的要加上-E,用法和grep一樣
grep -n3 root ###搜索root前後各3行
grep -A3 root ###搜索root所在行的後三行
grep -B3 root ###搜索root所在行的前三行
grep -i root ###忽略大小寫
grep x..y ###x和y之間有兩個字符的
* ###字符出現任意次
? ###字符出現0到1次
+ ###字符出現1到任意次
{n} ###字符出現n次
{m,n} ###字符最少出現m次最多出現n次
{0,n} ###字符出現0到n次
{m,} ###字符至少出現m次
(xy){n} ###xy出現n次
grep \<關鍵字\> ##搜索關鍵字
二.sed:文本編輯器
用來操作純ASCII碼的文本,把當前處理的行存儲在臨時緩衝區,可以僅僅處理指定的行,符合條件的處理,不符合的不處理,完成後把緩衝區的內容輸出到屏幕,緊接着處理下一行,直到文件結束
p ##顯示
d ##刪除
a ##添加
c ##替換
w ##寫入
i ##插入
-n ##安靜模式,只有經過sed處理的那行纔會顯示出來
(1)p ##顯示
sed -n '2,6!p' passwd ##2行和6行不顯示
(2)d ##刪除
sed '2,6!d' passwd ##2到6行的不刪除
(3)c ##替換
-i ###修改完成之後就保留在原文件裏
替換httpd默認端口的腳本
(4)a ##添加
(5)w ##寫入
sed '1r test' passwd ##把test的內容添加到passwd文件的第二行
sed -n '/root/=' passwd ##把root所在行行號打印出來
(6)sed的其他用法
sed -f rule test ###把策略寫在rule文件中直接修改文加test
sed '=' passwd | sed 'N;s/\n//g' ###給每一行標號,並且刪除換行符
sed -n '$p' test ###輸出最後一行
sed -n '1p' test ###輸出第一行
sed -e '=;!G' test v ##-e同時執行兩個策略,加行號,並且把每行分開
三.awk
awk:文本報告生成器,逐行處理文本,支持在處理第一行之前,做一些準備工作,以及在處理完後做一些總結性質的工作
BEGIN{ }:讀入第一行文本之前執行,一般用來初始化操作
{ }:逐行讀入進行處理
END{ }:處理完最後一行後執行,一般由來輸出處理結果
awk -F : '$7~/bash$/{print $0}' /etc/passwd ###第7列是以bash$結尾的輸出這行($0 ##表示輸出此行)
awk -F : '$7~/bash$/{print $1}' /etc/passwd ###第7列是以bash$結尾的輸出第一列,並且統計能登陸用戶的個數
awk -F : 'BEGIN{i=0}/bash$/{i++;print $1}END{print i}' passwd ###查找用戶是否能登錄,並輸出登錄用戶的用戶名和個數
awk 'NR>=3&&NR<=5{print}' /etc/passwd ##輸出在第3行到第5行之間的行
awk -F : 'BEGIN{i=0}$7~/bash$/{i++;print}END{print i}' passwd ###查找用戶是否能登錄,並輸出登錄用戶的信息和個數
awk 'BEGIN{a=4;print a+2}' ##awk也可以做運算
awk -F : 'NR==1{print}' /etc/passwd ###恆定輸出第一行
抓取IP:
awk -F : '{print $1," is readlly"}' /etc/passwd ##添加輸出的字符串
補充:
fmt -s -w 10 <<EOF ##一行只能輸出10個字符,否則自動換行
tail -n 10 -f /var/log/messages ##動態查看日誌
awk grep sed其三者的應用豐富多樣,文本處理是比較靈活的,只要符合規則,可以任意組合;面對不同的問題,寫出多樣的,符合實際情況的策略