幾個常用的文字處理shell 命令:find、grep、sort、uniq、sed、awk

OldBoy~發表於2017-05-17

find 檔案查詢

查詢txt和pdf檔案

find . \( -name "*.txt" -o -name "*.pdf" \) -print

查詢所有字母開頭的檔案

find . -name "[a-a]*"

否定引數->查詢所有非txt文字

find . ! -name "*.txt" -print

指定搜尋深度->列印出當前目錄的檔案(深度為1)

find . -maxdepth 1 -type f

正則方式查詢.txt和pdf

find . -regex  ".*\(\.txt|\.pdf\)$"
-iregex: 忽略大小寫的正則

查詢目錄下屬性為755的檔案

find . -prem 755

查詢所屬主為root的檔案

find -user root

尋找大於2k的檔案

find . -type f -size +2k

找到檔案後續動作

刪除當前目錄下所有的avi檔案

find . -type f -name "*.avi" -delete

執行動作(強大的exec)

find . -type f -user root -exec chown root {} \; //將當前目錄下的所有權變更為root

grep 文字搜尋

在file檔案中過濾掉字串'str'所在的行

grep -v "str" file

在file檔案中查詢時間在2017:22:50~2017:22:59所在的行

grep -E "2017:22:5[0-9]" file

在file檔案中查詢不包括360的行

grep -E "^[^360]" file

在file檔案中查詢包括w和t的行

grep -E "w*t" file

在file檔案中查詢大於560小於893的行

grep -E "[5-8][6-9][0-3]"

在file檔案中查詢包含兩個9的行

grep -E "9{2}" file

查詢大於兩個9的行

grep -E "9{2,}" file

查詢file檔案中的空行

grep -E "^$" file

查詢包括?的行

grep "?" file

查詢檔案中以w開頭的行

grep -E "^w" file

查詢檔案中不是以w開頭的行

grep -E "^[^w]" file

awk 資料流處理工具

查詢出日誌檔案中的每一列

awk '{print $0}' log.log

查詢出檔案中的第一列和第七列

awk '{print %$1 "\t"$7}' log.log

~匹配192.168.10.2的ip地址統計。!~為不匹配

cat file | awk '$0 !~ /192.168.10.2/' | grep 'php' |wc -|

sed 行定位

只列印第二行,不列印其它行的資料

sed -n '2'p file

從第一行到第九行的記錄

sed -n '1,9'p file

列印匹配php的行

sed -n '/php/p file

列印從第九行到匹配php的之間所有行

sed -n '9,/php/'p file

把第一行和第二行全部刪除(非檔案刪除)

sed '1,2'd file

Uniq行定位的使用

列印緊挨的重複行出現的次數

uniq -c file

只列印重複的行

uniq -d file

把apache網站的所有訪問ip統計出來,並列印統計次數

awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c

sort排序的使用

把檔案喊字母的聖墟進行排序

sort file

把檔案按照字母的降序進行排序

sort -r file

為進行分割後的第一列來排序

cat file | sort -t: -k1 -r

相關文章