linux 日志报告生成器,linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用...
我們前面已經(jīng)學(xué)習(xí)過 linux的性能查詢(top),以及網(wǎng)絡(luò)端口查詢(netstat)命令等等。
怎么讓我們查詢到的信息按 ? 我們需要的格式 顯示生成。
就是我們本章 需要 學(xué)習(xí)練習(xí)的。
主要是grep,sed,awk3個命令的運(yùn)用。
grep主要負(fù)責(zé)搜索
sed主要負(fù)責(zé)處理行
awk主要復(fù)雜處理列
我們在下一章的內(nèi)容再來學(xué)習(xí)實(shí)例,如果用這幾個命令來進(jìn)行性能監(jiān)控等。
grep
作用
grep命令可以指定文件中搜索特定的內(nèi)容,并將含有這些內(nèi)容的行標(biāo)準(zhǔn)輸出。
grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。
格式
grep [options]
[options]主要參數(shù):
-c:只輸出匹配行的計數(shù)。
-I:不區(qū)分大小寫(只適用于單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達(dá)式主要參數(shù):
\:忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開始行。
$: 匹配正則表達(dá)式的結(jié)束行。
\:到匹配正則表達(dá)式的行結(jié)束。
[ ]:單個字符,如[A]即A符合要求。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求。
。:所有的單個字符。
* :有字符,長度可以為0。
\(..\)保存已匹配的字符
正則表達(dá)式是Linux/Unix系統(tǒng)中非常重要的概念。正則表達(dá)式(也稱為“regex”或“regexp”)是一個可以描述一類字符串的模式(Pattern)。
如果一個字符串可以用某個正則表達(dá)式來描述,我們就說這個字符和該正則表達(dá)式匹配(Match)。
這和DOS中用戶可以使用通配符“*”代表任意字符類似。
在Linux系統(tǒng)上,正則表達(dá)式通常被用來查找文本的模式,以及對文本執(zhí)行“搜索-替換”操作和其它功能。
實(shí)例
$ ls -l | grep '^a'
通過管道過濾ls -l輸出的內(nèi)容,只顯示以a開頭的行。
$ grep 'test' d*
顯示所有以d開頭的文件中包含test的行。
$ grep 'test' aa bb cc
顯示在aa,bb,cc文件中匹配test的行。
$ grep '[a-z]\{5\}' aa
顯示aa文件中所有包含每個字符串有5個連續(xù)小寫字符的字符串的行。
$ grep 'w\(es\)t.*\1' aa
如果west被匹配,則es就被存儲到內(nèi)存中,并標(biāo)記為1,然后搜索任意個字符(.*),這些字符后面緊跟著另外一個\1 ,\1也就是es,因?yàn)榍懊姘裡s存儲到了內(nèi)存并默認(rèn)標(biāo)記為1了,找到就顯示該行。如果用egrep或grep -E,就不用"\"號進(jìn)行轉(zhuǎn)義,直接寫成'w(es)t.*\1'就可以了。
sed
作用
sed 常常用于一整個行的處理。sed是一種在線編輯器,它一次處理一行內(nèi)容。處理時,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。接著處理下一行,這樣不斷重復(fù),直到文件末尾。文件內(nèi)容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復(fù)操作;編寫轉(zhuǎn)換程序等。
格式
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
[options]主要參數(shù)
-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數(shù)據(jù)一般都會被列出到終端上。但如果加上 -n 參數(shù)后,則只有經(jīng)過sed 特殊處理的那一行(或者動作)才會被列出來。
-e :直接在命令列模式上進(jìn)行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內(nèi), -f filename 則可以運(yùn)行 filename 內(nèi)的 sed 動作;
-r :sed 的動作支持的是延伸型正規(guī)表示法的語法。(默認(rèn)是基礎(chǔ)正規(guī)表示法語法)
-i :直接修改讀取的文件內(nèi)容,而不是輸出到終端。
'command'主要參數(shù)
a :新增, a 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而這些字串會在新的一行出現(xiàn)(目前的上一行);
p :列印,亦即將某個選擇的數(shù)據(jù)印出。通常 p 會與參數(shù) sed -n 一起運(yùn)行~
s :取代,可以直接進(jìn)行取代的工作哩!通常這個 s 的動作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是啦!
pattern正則表達(dá)式主要參數(shù)
^
行首定位符
/^my/ ?匹配所有以my開頭的行
$行尾定位符
/my$/ ?匹配所有以my結(jié)尾的行
.匹配除換行符以外的單個字符
/m..y/ ?匹配包含字母m,后跟兩個任意字符,再跟字母y的行
*匹配零個或多個前導(dǎo)字符
/my*/ ?匹配包含字母m,后跟零個或多個y字母的行
[]? 匹配指定字符組內(nèi)的任一字符
/[Mm]y/ ?匹配包含My或my的行
[^]?匹配不在指定字符組內(nèi)的任一字符
/[^Mm]y/ ?匹配包含y,但y之前的那個字符不是M或m的行
\(..\)? ? ?保存已匹配的字符
1,20s/\(you\)self/\1r/ ?標(biāo)記元字符之間的模式,并將其保存為標(biāo)簽1,之后可以使用\1來引用它。最多可以定義9個標(biāo)簽,從左邊開始編號,最左邊的是第一個。此例中,對第1到第20行進(jìn)行處理,you被保存為標(biāo)簽1,如果發(fā)現(xiàn)youself,則替換為your。
&? ? ?保存查找串以便在替換串中引用
s/my/**&**/ ?符號&代表查找串。my將被替換為**my**
\
/\
\>? ? ?詞尾定位符
/my\>/ ?匹配包含以my結(jié)尾的單詞的行
x\{m\}連續(xù)m個x
/9\{5\}/ 匹配包含連續(xù)5個9的行
x\{m,\} ? ? ?至少m個x
/9\{5,\}/ ?匹配包含至少連續(xù)5個9的行
x\{m,n\} ? ? 至少m個,但不超過n個
/9\{5,7\}/ ?匹配包含連續(xù)5到7個9的行
定址
定址用于決定對哪些行進(jìn)行編輯。地址的形式可以是數(shù)字、正則表達(dá)式、或二者的結(jié)合。如果沒有指定地址,sed將處理輸入文件的所有行。
地址是一個數(shù)字,則表示行號;是“$"符號,則表示最后一行。
實(shí)例
刪除d命令
$ sed '2d' example
刪除example文件的第二行。
$ sed '2,$d' example
刪除example文件的第二行到末尾所有行。
$ sed '$d' example
刪除example文件的最后一行。
$ sed '/test/'d example
刪除example文件所有包含test的行。
替換s命令
$ sed 's/test/mytest/g' example
在整行范圍內(nèi)把test替換為mytest。如果沒有g(shù)標(biāo)記,則只有每行第一個匹配的test被替換成mytest。
$ sed -n 's/^test/mytest/p' example
(-n)選項(xiàng)和p標(biāo)志一起使用表示只打印那些發(fā)生替換的行。也就是說,如果某一行開頭的test被替換成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example
&;符號表示替換換字符串中被找到的部份。所有以192.168.0.1開頭的行都會被替換成它自已加localhost,變成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example
love被標(biāo)記為1,所有l(wèi)oveable會被替換成lovers,而且替換的行會被打印出來。
$ sed 's#10#100#g' example
不論什么字符,緊跟著s命令的都被認(rèn)為是新的分隔符,所以,“#”在這里是分隔符,代替了默認(rèn)的“/”分隔符。表示把所有10替換成100。
選定行的范圍逗號
$ sed -n '/test/,/check/p' example
所有在模板test和check所確定的范圍內(nèi)的行都被打印。
$ sed -n '5,/^test/p' example
打印從第五行開始到第一個包含以test開始的行之間的所有行。
$ sed '/test/,/check/s/$/sed test/' example
對于模板test和west之間的行,每行的末尾用字符串sed test替換。
多點(diǎn)編輯e命令
$ sed -e '1,5d' -e 's/test/check/' example
(-e)選項(xiàng)允許在同一行里執(zhí)行多條命令。如例子所示,第一條命令刪除1至5行,第二條命令用check替換test。命令的執(zhí)行順序?qū)Y(jié)果有影響。如果兩個命令都是替換命令,那么第一個替換命令將影響第二個替換命令的結(jié)果。
$ sed --expression='s/test/check/' --expression='/love/d' example
一個比-e更好的命令是--expression。它能給sed表達(dá)式賦值。
從文件讀入r命令
$ sed '/test/r file' example
file里的內(nèi)容被讀進(jìn)來,顯示在與test匹配的行后面,如果匹配多行,則file的內(nèi)容將顯示在所有匹配行的下面。
寫入文件w命令
$ sed -n '/test/w file' example
在example中所有包含test的行都被寫入file里。
追加命令a命令
$ sed '/^test/a\\this is a test line' example
在example文件中'this is a test line'被追加到以test開頭的行后面,sed要求命令a后面有一個反斜杠。
插入i命令
$ sed '/test/i\\new line-------------------------' example如果test被匹配,則把反斜杠后面的文本插入到匹配行的前面。
下一個n命令
$ sed '/test/{ n; s/aa/bb/; }' example
如果test被匹配,則移動到匹配行的下一行,替換這一行的aa,變?yōu)閎b,并打印該行,然后繼續(xù)。
變形y命令
$ sed '1,10y/abcde/ABCDE/' example
把1--10行內(nèi)所有abcde轉(zhuǎn)變?yōu)榇髮?#xff0c;注意,正則表達(dá)式元字符不能使用這個命令。
退出q命令
$ sed '10q' example
打印完第10行后,退出sed。
保持和獲取h命令和G命令
$ sed -e '/test/h' -e '$G example
在sed處理文件的時候,每一行都被保存在一個叫模式空間的臨時緩沖區(qū)中,除非行被刪除或者輸出被取消,否則所有被處理的行都將打印在屏幕上。接著模式空間被清空,并存入新的一行等待處理。在這個例子里,匹配test的行被找到后,將存入模式空間,h命令將其復(fù)制并存入一個稱為保持緩存區(qū)的特殊緩沖區(qū)內(nèi)。第二條語句的意思是,當(dāng)?shù)竭_(dá)最后一行后,G命令取出保持緩沖區(qū)的行,然后把它放回模式空間中,且追加到現(xiàn)在已經(jīng)存在于模式空間中的行的末尾。在這個例子中就是追加到最后一行。簡單來說,任何包含test的行都被復(fù)制并追加到該文件的末尾。
保持和互換h命令和x命令
$ sed -e '/test/h' -e '/check/x' example
互換模式空間和保持緩沖區(qū)的內(nèi)容。也就是把包含test與check的行互換。
awk
作用
awk 比較傾向于一行當(dāng)中分成數(shù)個『欄位』(或者稱為一個域,也就是一列)來處理。awk是一個強(qiáng)大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數(shù)據(jù)分析并生成報告時,顯得尤為強(qiáng)大。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片,切開的部分再進(jìn)行各種分析處理。
awk有3個不同版本: awk、nawk和gawk,未作特別說明,一般指gawk,gawk 是 AWK 的 GNU 版本。
awk其名稱得自于它的創(chuàng)始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母。實(shí)際上 AWK 的確擁有自己的語言: AWK 程序設(shè)計語言 , 三位創(chuàng)建者已將它正式定義為“樣式掃描和處理語言”。它允許您創(chuàng)建簡短的程序,這些程序讀取輸入文件、為數(shù)據(jù)排序、處理數(shù)據(jù)、對輸入執(zhí)行計算以及生成報表,還有無數(shù)其他的功能。
格式
awk [-F ?field-separator] ?'commands' ?input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可選的。 input-file(s) 是待處理的文件。
在awk中,文件的每一行中,由域分隔符分開的每一項(xiàng)稱為一個域。通常,在不指名-F域分隔符的情況下,默認(rèn)的域分隔符是空格。
commands
awk的命令非常多,因?yàn)樗踔量梢运闶且粋€編程語言。我們這里就不詳細(xì)講述了。后面的實(shí)例學(xué)習(xí)中會了解到一部分常用的命令。
這里大概給出awk中的一些學(xué)習(xí)目錄如下:
print和printf
awk中同時提供了print和printf兩種打印輸出的函數(shù)。
其中print函數(shù)的參數(shù)可以是變量、數(shù)值或者字符串。字符串必須用雙引號引用,參數(shù)用逗號分隔。如果沒有逗號,參數(shù)就串聯(lián)在一起而無法區(qū)分。這里,逗號的作用與輸出文件的分隔符的作用是一樣的,只是后者是空格而已。
printf函數(shù),其用法和c語言中printf基本相似,可以格式化字符串,輸出復(fù)雜時,printf更加好用,代碼更易懂。
awk的環(huán)境變量
變量描述
$n當(dāng)前記錄的第n個字段,字段間由FS分隔。
$0完整的輸入記錄。
ARGC命令行參數(shù)的數(shù)目。
ARGIND命令行中當(dāng)前文件的位置(從0開始算)。
ARGV包含命令行參數(shù)的數(shù)組。
CONVFMT數(shù)字轉(zhuǎn)換格式(默認(rèn)值為%.6g)
ENVIRON環(huán)境變量關(guān)聯(lián)數(shù)組。
ERRNO最后一個系統(tǒng)錯誤的描述。
FIELDWIDTHS字段寬度列表(用空格鍵分隔)。
FILENAME當(dāng)前文件名。
FNR同NR,但相對于當(dāng)前文件。
FS字段分隔符(默認(rèn)是任何空格)。
IGNORECASE如果為真,則進(jìn)行忽略大小寫的匹配。
NF當(dāng)前記錄中的字段數(shù)。
NR當(dāng)前記錄數(shù)。
OFMT數(shù)字的輸出格式(默認(rèn)值是%.6g)。
OFS輸出字段分隔符(默認(rèn)值是一個空格)。
ORS輸出記錄分隔符(默認(rèn)值是一個換行符)。
RLENGTH由match函數(shù)所匹配的字符串的長度。
RS記錄分隔符(默認(rèn)是一個換行符)。
RSTART由match函數(shù)所匹配的字符串的第一個位置。
SUBSEP數(shù)組下標(biāo)分隔符(默認(rèn)值是\034)。
awk運(yùn)算符
運(yùn)算符 描述
= += -= *= /= %= ^= **=賦值
?:C條件表達(dá)式
||邏輯或
&&邏輯與
~ ~!匹配正則表達(dá)式和不匹配正則表達(dá)式
< <= > >= != ==關(guān)系運(yùn)算符
空格連接
+ -加,減
* / &乘,除與求余
+ - !一元加,減和邏輯非
^ ***求冪
++ --增加或減少,作為前綴或后綴
$字段引用
in數(shù)組成員
專屬正則表達(dá)式元字符
一般通用的元字符集就不講了,可參考我的Sed和Grep。以下幾個是gawk專用的,不適合unix版本的awk。
\Y
匹配一個單詞開頭或者末尾的空字符串。
\B
匹配單詞內(nèi)的空字符串。
\<
匹配一個單詞的開頭的空字符串,錨定開始。
\>
匹配一個單詞的末尾的空字符串,錨定末尾。
\w
匹配一個字母數(shù)字組成的單詞。
\W
匹配一個非字母數(shù)字組成的單詞。
\‘
匹配字符串開頭的一個空字符串。
\'
匹配字符串末尾的一個空字符串。
awk編程
下面列舉awk編程需要了解的東西:
變量
BEGIN模塊
END模塊
重定向和管道
條件語句
if語句
if/else語句,用于雙重判斷。
if/else else if語句,用于多重判斷。
循環(huán)
數(shù)組
下標(biāo)與關(guān)聯(lián)數(shù)組
awk的內(nèi)建函數(shù)
字符串函數(shù)
時間函數(shù)
日期和時間格式說明符
內(nèi)建數(shù)學(xué)函數(shù)
自定義函數(shù)
實(shí)例
截取單列
last會列出最近登錄的情況,僅取出前五行
假設(shè)last -n 5的輸出如下
[root@www ~]# last -n 5
root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in
root pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41)
root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48)
dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00)
root tty1 Fri Sep 5 14:09 - 14:10 (00:01)
如果只是顯示最近登錄的5個帳號 ?也就是第一列
#last -n 5 | awk '{print $1}'
root
root
root
dmtsai
rootawk工作流程是這樣的:讀入有'\n'換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,$0則表示所有域,$1表示第一個域,$n表示第n個域。默認(rèn)域分隔符是"空白鍵" 或 "[tab]鍵",所以$1表示登錄用戶,$3表示登錄用戶ip,以此類推。
設(shè)置分隔符
默認(rèn)域分隔符是"空白鍵" 或 "[tab]鍵",如果想用其它符合作分隔符,參照下例:
/etc/passwd中是用:分割的
如下:
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
sys:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
如果只是顯示/etc/passwd的賬戶
#cat /etc/passwd |awk -F ':' '{print $1}'
root
daemon
bin
sys
-F指定域分隔符為':'。
{print $1}輸出第一列
顯示多行
顯示/etc/passwd的賬戶和賬戶對應(yīng)的shell,顯示時賬戶與shell之間以tab鍵分割
#cat /etc/passwd |awk -F ':' '{print $1"\t"$7}'
root /bin/bash
daemon /bin/sh
bin /bin/sh
sys /bin/sh
-F指定域分隔符為':'。
{print $1 "\t" $7} 輸出第一列 ?tab ?和 第7列
使用BEGIN END模塊
顯示/etc/passwd的賬戶和賬戶對應(yīng)的shell,而賬戶與shell之間以逗號分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
#cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
blue,/bin/nosh
awk工作流程是這樣的:先執(zhí)行BEGING,然后讀取文件,讀入有/n換行符分割的一條記錄,然后將記錄按指定的域分隔符劃分域,填充域,
$0則表示所有域,$1表示第一個域,$n表示第n個域
,隨后開始執(zhí)行模式所對應(yīng)的動作action。接著開始讀入第二條記錄······直到所有的記錄都讀完,最后執(zhí)行END操作。
正則搜索
搜索/etc/passwd里有root關(guān)鍵字的所有行
#awk -F ':' '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash這種是pattern的使用示例,匹配了pattern(這里是root)的行才會執(zhí)行action(沒有指定action,默認(rèn)輸出每行的內(nèi)容)。
搜索支持正則,例如找root開頭的: awk -F ':' ?'/^root/' /etc/passwd
正則搜索顯示單列
搜索/etc/passwd有root關(guān)鍵字的所有行,并顯示對應(yīng)的shell ?也就是第7列
# awk -F ':' '/root/{print $7}' /etc/passwd
/bin/bash這里指定了action{print $7}
awk環(huán)境變量的運(yùn)用
我們上面提過都有哪些環(huán)境變量。
現(xiàn)在我們要統(tǒng)計/etc/passwd文件中的:文件名,每行的行號,每行的列數(shù)
使用到的變量參數(shù)如下:
FILENAME ? ? ? ? ? awk瀏覽的文件名
NR ? ? ? ? ? ? ? ? 已讀的記錄數(shù) ?也就是第幾行
NF ? ? ? ? ? ? ? ? 瀏覽記錄的域的個數(shù) ?也就是 共幾列
$0 輸出整行
#awk -F ':' '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:daemon:x:1:1:daemon:/usr/sbin:/bin/sh
filename:/etc/passwd,linenumber:3,columns:7,linecontent:bin:x:2:2:bin:/bin:/bin/sh
filename:/etc/passwd,linenumber:4,columns:7,linecontent:sys:x:3:3:sys:/dev:/bin/sh
使用printf替代print
printf就是線使用占位符占位,后面再一起傳入?yún)?shù),可以讓代碼更加簡潔,易讀
awk -F ':' '{printf("filename:%s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd
自定義變量
統(tǒng)計/etc/passwd的賬戶人數(shù),每一行是一個賬戶,因?yàn)閯偤胊wk是逐行遍歷,所以我們自定義一個count自加就行。
當(dāng)然 定義count為0需要在 awk逐行遍歷之前 ?所以需要用BEGIN模塊。
awk 'BEGIN {count=0;print "[start]user count is ", count} {count=count+1;print $0;} END{print "[end]user count is ", count}' /etc/passwd
[start]user count is 0
root:x:0:0:root:/root:/bin/bash
...
[end]user count is 40
運(yùn)算
我們需要統(tǒng)計某個文件夾下的文件占用的字節(jié)數(shù)
因?yàn)槲募加玫淖止?jié)數(shù) 在 ls -l命令中的第5列
所以我們使用如下命令:
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'
[end]size is 8657198
如果以M為單位顯示:
ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}'
[end]size is 8.25889 M注意,統(tǒng)計不包括文件夾的子目錄。
條件語句
統(tǒng)計某個文件夾下不等于4096的其它文件占用的字節(jié)數(shù)-----過濾4096大小的文件:
ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}'
[end]size is 8.22339 M
數(shù)組
顯示/etc/passwd的賬戶
awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
0 root
1 daemon
2 bin
3 sys
4 sync
5 games
...... awk編程的內(nèi)容極多,這里只羅列簡單常用的用法,更多請參考 http://www.gnu.org/software/gawk/manual/gawk.html
總結(jié)
以上是生活随笔為你收集整理的linux 日志报告生成器,linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪驱逐舰05不限里程年限是指电芯还是
- 下一篇: 美国M1艾布拉姆斯系列主战坦克?