文本處理
各種文本工具,查看,分析,統計文本文件
grep
正則表達式
擴展正則表達式
sed
cat -n f1
加行號(空格行都計算)
cat -b f1
加行號(只計算有字符的行)
cat -ns f1
加行號(壓縮空行)
cat -v f1
能看windows文件的M`符號
cat -T f1
能夠顯示里面的tab空位,顯示為^I
cat -A f1
能夠顯示所有的=-vET
cat 命令是一個標準輸入到標準輸出
tac f1
將文本內容倒向顯示
rev f2
echo {1..10} >>f2
01 9 8 7 6 5 4 3 2 1
將文本反向顯示(內容為字符顯示)
more
space空格一頁一頁翻
q :退出
回車翻一行
less
d:翻半屏
/ :文本搜索
n/N:跳到上一個或者下一個匹配
head 頭
head -n 3
-3 /var/log/messages 頭三行顯示
tail 后
tail -n 10 /var/log/messages 后10行的顯示
tail -f /var/log/messages 自動顯示更新的日志內容(保持顯示內容)
tail -n 0 -f /var/log/message &
日志有新信息就顯示,沒新信息都不出現 (在后臺運行)
fg 1
Ctrl +C (要切換回前臺在結束)
tail -c 10 f1
顯示后10個字符(包括空格,符號。)
按列抽取文本cut和合拼文件paste
cut
-d :指明分隔符,默認tab
-f :
#:第#個字段
#,#[,#]:離散的多個字段,例如1,3,6
#-#:連續的多個字段,例如1-6
混合使用:1-3,7
-c : 按字符切割
–output-delimiter=STRING指定輸出分隔符
cut
cut -d: -f1,3,7 passwd
取出用:分隔的1.3.7列取出成行
cut -c44-46 f1
取出字符第44到46列,取出顯示成行
ifonfig | head -2 |tail -1 |cut -d: -f2| cut -d" " -f1
paste 橫行合并ca
-d 分隔符:指定分隔符
-s:所有行合成一行顯示
wc 文本數據統計
wc + 文件
wc + +文件
-l :行
-c :多少個字節總數
-m :計算字符總數
-w :顯示單詞總數
sort
整理過文本顯示
-r:執行反向(由上至下)整理
-n:執行按數字大小整理
-f:忽略字符串的字符大小寫
-u:刪除多余的空行
-t c :選項使用c做為字段界定符
-k X :選項按照使用c字符分隔的X列來整理能夠使用多次
uniq
uniq f1
相鄰的相同的刪去,不相鄰的不刪除
-c :顯示所有行重復的次數
-d :只顯示重復的
-u :只顯示不重復的
sort f2 |uniq -c
netstat -nt
cut -d: -f1,3,7 /etc/passwd |sort -t: -k2 -n
netstat -nt |tr -s " " ":"|cut -d: -f6 |tail -n +3|sort -n |uniq -c
diff
-u
diff f1 f2 -u > diff.log 對比f1 與f2 的不同賦予diff.log
rm -f f2
patch -b f1 diff.log 自動備份
patch
-b 自動備份改變了的文件
grep :文本過濾工具
grep,egrep,fgrep(不支持正則表達式搜索)
sed: stream editor,文本編輯工具
awk:Linux 上實現gawk,文本報告生成器
grep
:作用文本搜索工具
ls -R
grep root /etc /passwd /etc/shadow
-v:不包括指定的 顯示出來
-i: 忽略大小寫
-n:顯示對應的行號
-c:統計匹配的行數目
-o:僅顯示匹配到的字符串
-q:靜默模式,不輸出任何信息
echo $?
0就成功了,1是不成功。
-A:after,將指定的關鍵字后面N行顯示出來
grep -nA3 root /etc/passwd
-B:before,指定關鍵字前面N行顯示
-C:前兩行,后兩行都顯示出來
-e:實現多個選項間的邏輯or關系
grep -e root -e bash /etc/passwd
-w:整行匹配整個單詞
指的是整個單詞搜索
-E:使用ERE
-F:等于使用fgrep
正則表達式
REGEXP: 由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表達字符字面意義,而表示控制或通配的功能
分兩類:
基本正則表達式:BRE
擴展正則表達式:ERE
grep -E,egrep
正則表達式引擎:
采用不同算法,檢查處理正則表達式的軟件模塊
PCRE
元字符分類:字符匹配,匹配次數,位置錨定,分組
man 7 regex
. : 匹配任意單個字符
[]: 匹配指定范圍內任意單個字符
grep r[a-z]t /etc/passwd
[^]:匹配指定范圍外的任意單個字符
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數。
*:匹配前面的字符任意次,包括0次
貪婪模式,盡可能長的匹配
.*:任意長度的任意字符
\?:匹配其前面的字符0或1次
\+:匹配其前面的字符至少1詞
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符最少m次,最多n次
\{,n\}:匹配前面的字符最多n次
\{m,\}:匹配前面的字符最少m次
位置錨定:定位出現的位置
^:行首錨定,用于模式的最左側
$:行尾錨地,用于模式的最右側
grep -v ''
^PATTERN$:用于匹配整行
^$:空行
^[[:space:]]*$:空白行
\< 或 \b:詞首的錨定,用于單詞的左側
grep '\bro'f1
\> 或 \b:詞尾錨定,用于單詞模式的右側
\<PATTEN\>:匹配整個單詞
分組:\(\):將一個或多個字符捆綁在一起,當作一個整體進行處理
如: \(root\)\+
分組括號中的模式匹配到的內容會比正則表達式引擎記錄于內部的變量中,這些變量的命名方式為:\1,\2,\3,…
df |grep '/dve/sd'
nmap -sP -v 10.1.252.210/24 |grep -B1|grep -v
grep "\b[1-9][0-9][0-9]\b"
grep \(bash\+\(testbash\+\(basher\+\(nologin)*\)+
grep –color '^\<\(.*\)\>.*\b\1\b$' /etc/passwd
grep '^\(.*\).*/\1$' /etc/passwd
egrep 擴展的正則表達式
egrep = grep -E
.任意次數
[]指定范圍的字符
[^]不在指定范圍的字符
次數的匹配:
*:匹配前面字符任意次數
?:0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置錨定:
^:行首
$:行尾
\<,\b:首
\>,\b:尾
分組:
()
后向引用:\1,\2
或者:
a|b
C|cat: C或cat
(C|c)at:Cat或cat
egrep '^(zczx|root)\b' /etc/passwd |cut -d: -f3,7
echo "/etc/isse" | egrep -o "[^/]+/?$"
| egrep -o "(/.*)"
原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/29772