linux覆盤:基礎篇二(三劍客)

find查找命令

用的最多的是刪除之前的日誌,好比三個月前的,還有就是查找文件名正則表達式

按文件和目錄:find /root/ -type f(文件) -type d(目錄)bash

針對文件名字搜索:find /root/ -name "*.txt" 搜下面有txt的文件ssh

按建立時間:find /root/ -mtime +1(一天之前) -1(一天之內)+5(五天之前) -5(五天之內)spa

find /etc/ -type d -name "*.txt" 目錄命令行

find /etc/ -type f -name "*.txt*" 文件日誌

find /root/ -type f -mmin -60 60分鐘內的文件crontab

find /root/ -type f -mmin -200 200分鐘內的文件it

find /root/ -type f -size -10k -exec ls -lh {} \; 列出root目錄小於10k的文件test

find /root/ -type f -mmin -200 -exec mv {} {}.bak \; 200分鐘之內的文件後綴加.bakawk

grep打印過濾

grep '[0-9]' /etc/inittab 過濾出全部包含數字的行

grep -A2(xxx及下面兩行) -B2(xxx及上面兩行) -C2(上下各兩行) 'xxx' /root/

grep -c 顯示行數

grep -n 顯示行號(用的多打個call)

grep -v 取反 grep -v '[0-9]' /etc/inittab 過濾出全部不包含數字的行

grep -E 擴展選項可加入管道符 grep -E -n 'abc|123' 123.txt

細節注意:

grep '^[a-zA-Z]' test.txt 括號之外表示以a-zA-Z爲首字母的行

grep '[^a-zA-Z]' test.txt 括號內表示出了a-zA-Z以外的行

幾個實例:

grep -v '^#' /etc/crontab |grep -v '^$' 去除全部空行和以 ‘#’ 開頭的行

grep -v '^#' /etc/inittab 把全部以 ‘#’ 開頭的行去除

在正則表達式中, 「^」 表示行的開始, 「$」 表示行的結尾,那麼空行則能夠用 「^$」 表示

. 表示任意一個字符(grep)

*表示零個或多個前面的字符(grep)

+篩選一個或一個以上前面的字符(egrep)

?篩選零個或一個前面的字符(egrep)

sed打印過濾

-n :只打印模式匹配的行

-e :直接在命令行模式上進行sed動做編輯,此爲默認選項

-f :將sed的動做寫在一個文件內,用–f filename 執行filename內的sed動做

-r :支持擴展表達式

-i :直接修改文件內容

sed -n '5'p 123.txt 打印第五行

sed -n '1,5'p 123.txt 打印1到5行

sed -n '1,$'p 123.txt 打印1到尾行

sed -n '/^1/'p 123.txt 打印首字母爲1的行

sed -n '/sd$/'p 123.txt 打印sd結尾的行

sed -e '1'p -e '/root/'p -n 123.txt 多個選項同時匹配,結尾註意加-n不然重複內容

sed -n -r '/o+t/'p 123.txt 打印-r支持擴展表達式的+

sed -nr '/o{2}/'p 123.txt 打印兩個o或以上的行

下面進入刪除區域:

sed ‘1’d test.txt 刪除文件第一行 d是刪除(實際上只是不顯示)

sed ‘1,3’d test.txt 刪除1到3行(實際上只是不顯示)

sed ‘/oot/’d test.txt 刪除包含oot的行(實際上只是不顯示)

sed ‘1,2s/ot/to/g’ test.txt  將1-2行的ot更換成to(s是替換 g是全局替換)

sed ‘s/[0-9]//g’ test.txt 刪除所有的數字(實際上只是不顯示)

sed ‘s/[a-zA-Z]//g’ test.txt 刪除所有的英文字母

sed -r 's/(rot)(.*)(bash)/\3\2\1/' test.txt 把三段順序顛倒打印出來

sed ‘s/^.*$/123&/’ test.txt 這個是給全部行前面加上123

awk三劍客之油嘴滑舌花裏胡哨小飛俠

awk -F ':' '{print $1}' 打印第一段

awk -F指定分隔符 $0打印全部 $1第一段 $2,$3,$7打印237段

awk -F ':' '$1~/oo/' 888.txt 匹配第一段有oo的行

awk -F ':' '$7!="/sbin/nologin"' /etc/passwd

!= 爲不匹配,除了針對某一個段的字符進行邏輯比較外,還能夠兩個段之間進行邏輯比較

awk -F ':' '$3<$4' /etc/passwd 第三段數字小於第四段的打印出來

head -n3 /etc/passwd | awk -F ':' '{print NF}'   NF是分割成多少段

head -n3 /etc/passwd | awk -F ':' '{print $NF}'   $NF是最後一段的值

head -n3 /etc/passwd | awk -F ':' '{print NR}'   NR是行數

awk -F ':' 'NR>20 && $1 ~ /ssh/' /etc/passwd 行數大於20而且第一段有ssh的段打印出來

head -n2 /etc/passwd |awk -F ':' '{$7=$3+$4; print $0}' 第七段等於第三四段相加,打印全局

相關文章
相關標籤/搜索