Linux如何通過命令查看日志文件的某幾行(中間幾行或最后幾行)

linux 如何顯示一個(gè)文件的某幾行(中間幾行)

【一】從第3000行開始,顯示1000行。即顯示3000~3999行

cat filename | tail -n +3000 | head -n 1000

【二】顯示1000行到3000行

cat filename| head -n 3000 | tail -n +1000

*注意兩種方法的順序

分解:

? ? tail -n 1000:顯示最后1000行

? ? tail -n +1000:從1000行開始顯示凶朗,顯示1000行以后的

? ? head -n 1000:顯示前面1000行

【三】用sed命令

?sed -n '5,10p' filename 這樣你就可以只查看文件的第5行到第10行惊豺。

Linux統(tǒng)計(jì)文件行數(shù)

語(yǔ)法:wc [選項(xiàng)] 文件…

說明:該命令統(tǒng)計(jì)給定文件中的字節(jié)數(shù)、字?jǐn)?shù)粱檀、行數(shù)翔曲。如果沒有給出文件名迫像,則從標(biāo)準(zhǔn)輸入讀取劈愚。wc同時(shí)也給出所有指定文件的總統(tǒng)計(jì)數(shù)瞳遍。字是由空格字符區(qū)分開的最大字符串。

該命令各選項(xiàng)含義如下:

  - c 統(tǒng)計(jì)字節(jié)數(shù)菌羽。

  - l 統(tǒng)計(jì)行數(shù)掠械。

  - w 統(tǒng)計(jì)字?jǐn)?shù)。

這些選項(xiàng)可以組合使用注祖。

輸出列的順序和數(shù)目不受選項(xiàng)的順序和數(shù)目的影響猾蒂。

總是按下述順序顯示并且每項(xiàng)最多一列。

行數(shù)是晨、字?jǐn)?shù)肚菠、字節(jié)數(shù)、文件名

如果命令行中沒有文件名罩缴,則輸出中不出現(xiàn)文件名蚊逢。

例如:

$ wc - lcw file1 file2

4 33 file1

7 52 file2

11 11 85 total

舉例分析:

1.統(tǒng)計(jì)demo目錄下层扶,js文件數(shù)量:

find demo/ -name "*.js" |wc -l

2.統(tǒng)計(jì)demo目錄下所有js文件代碼行數(shù):

find demo/ -name "*.js" |xargs cat|wc -l 或 wc -l `find ./ -name "*.js"`|tail -n1

3.統(tǒng)計(jì)demo目錄下所有js文件代碼行數(shù),過濾了空行:

find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l


1.簡(jiǎn)介

sed是非交互式的編輯器烙荷。它不會(huì)修改文件镜会,除非使用shell重定向來保存結(jié)果。默認(rèn)情況下终抽,所有的輸出行都被打印到屏幕上戳表。

sed編輯器逐行處理文件(或輸入),并將結(jié)果發(fā)送到屏幕昼伴。具體過程如下:首先sed把當(dāng)前正在處理的行保存在一個(gè)臨時(shí)緩存區(qū)中(也稱為模式空間)匾旭,然后處理臨時(shí)緩沖區(qū)中的行,完成后把該行發(fā)送到屏幕上圃郊。sed每處理完一行就將其從臨時(shí)緩沖區(qū)刪除季率,然后將下一行讀入,進(jìn)行處理和顯示描沟。處理完輸入文件的最后一行后飒泻,sed便結(jié)束運(yùn)行。sed把每一行都存在臨時(shí)緩沖區(qū)中吏廉,對(duì)這個(gè)副本進(jìn)行編輯泞遗,所以不會(huì)修改原文件。

?2.定址

定址用于決定對(duì)哪些行進(jìn)行編輯席覆。地址的形式可以是數(shù)字史辙、正則表達(dá)式、或二者的結(jié)合佩伤。如果沒有指定地址聊倔,sed將處理輸入文件的所有行。

?地址是一個(gè)數(shù)字生巡,則表示行號(hào)耙蔑;是“$"符號(hào),則表示最后一行孤荣。例如:?

sed -n '3p' datafile

只打印第三行

? 只顯示指定行范圍的文件內(nèi)容甸陌,例如:

# 只查看文件的第100行到第200行

sed -n '100,200p' mysql_slow_query.log

?地址是逗號(hào)分隔的,那么需要處理的地址是這兩行之間的范圍(包括這兩行在內(nèi))盐股。范圍可以用數(shù)字钱豁、正則表達(dá)式、或二者的組合表示疯汁。例如:

sed '2,5d' datafile

#刪除第二到第五行

sed '/My/,/You/d' datafile

#刪除包含"My"的行到包含"You"的行之間的行

sed '/My/,10d' datafile

#刪除包含"My"的行到第十行的內(nèi)容


3.命令與選項(xiàng)

sed命令告訴sed如何處理由地址指定的各輸入行牲尺,如果沒有指定地址則處理所有的輸入行。

?3.1 sed命令

命令?功能

?a\

?在當(dāng)前行后添加一行或多行幌蚊。多行時(shí)除最后一行外谤碳,每行末尾需用“\”續(xù)行

c\?用此符號(hào)后的新文本替換當(dāng)前行中的文本凛澎。多行時(shí)除最后一行外,每行末尾需用"\"續(xù)行

i\?在當(dāng)前行之前插入文本估蹄。多行時(shí)除最后一行外塑煎,每行末尾需用"\"續(xù)行

d?刪除行

h?把模式空間里的內(nèi)容復(fù)制到暫存緩沖區(qū)

H?把模式空間里的內(nèi)容追加到暫存緩沖區(qū)

g?把暫存緩沖區(qū)里的內(nèi)容復(fù)制到模式空間,覆蓋原有的內(nèi)容

G?把暫存緩沖區(qū)的內(nèi)容追加到模式空間里臭蚁,追加在原有內(nèi)容的后面

l?列出非打印字符

p?打印行

n?讀入下一輸入行最铁,并從下一條命令而不是第一條命令開始對(duì)其的處理

q?結(jié)束或退出sed

r?從文件中讀取輸入行

!?對(duì)所選行以外的所有行應(yīng)用命令

s?用一個(gè)字符串替換另一個(gè)

g?在行內(nèi)進(jìn)行全局替換


w?將所選的行寫入文件

x?交換暫存緩沖區(qū)與模式空間的內(nèi)容

y?將字符替換為另一字符(不能對(duì)正則表達(dá)式使用y命令)

?3.2 sed選項(xiàng)

選項(xiàng)?功能

-e?進(jìn)行多項(xiàng)編輯,即對(duì)輸入行應(yīng)用多條sed命令時(shí)使用

-n?取消默認(rèn)的輸出

-f?指定sed腳本的文件名


4.退出狀態(tài)

sed不向grep一樣垮兑,不管是否找到指定的模式冷尉,它的退出狀態(tài)都是0。只有當(dāng)命令存在語(yǔ)法錯(cuò)誤時(shí)系枪,sed的退出狀態(tài)才不是0雀哨。

5.正則表達(dá)式元字符

?與grep一樣,sed也支持特殊元字符私爷,來進(jìn)行模式查找雾棺、替換。不同的是衬浑,sed使用的正則表達(dá)式是括在斜杠線"/"之間的模式捌浩。

如果要把正則表達(dá)式分隔符"/"改為另一個(gè)字符,比如o工秩,只要在這個(gè)字符前加一個(gè)反斜線尸饺,在字符后跟上正則表達(dá)式,再跟上這個(gè)字符即可助币。例如:sed -n '\o^Myop' datafile

元字符?功能?示例

^?行首定位符?/^my/ ?匹配所有以my開頭的行

$?行尾定位符?/my$/ ?匹配所有以my結(jié)尾的行

.?匹配除換行符以外的單個(gè)字符?/m..y/ ?匹配包含字母m浪听,后跟兩個(gè)任意字符,再跟字母y的行

*?匹配零個(gè)或多個(gè)前導(dǎo)字符?/my*/ ?匹配包含字母m,后跟零個(gè)或多個(gè)y字母的行

[]?匹配指定字符組內(nèi)的任一字符?/[Mm]y/ ?匹配包含My或my的行

[^]?匹配不在指定字符組內(nèi)的任一字符?/[^Mm]y/ ?匹配包含y眉菱,但y之前的那個(gè)字符不是M或m的行

\(..\)?保存已匹配的字符?1,20s/\(you\)self/\1r/ ?標(biāo)記元字符之間的模式迹栓,并將其保存為標(biāo)簽1,之后可以使用\1來引用它倍谜。最多可以定義9個(gè)標(biāo)簽迈螟,從左邊開始編號(hào),最左邊的是第一個(gè)尔崔。此例中,對(duì)第1到第20行進(jìn)行處理褥民,you被保存為標(biāo)簽1季春,如果發(fā)現(xiàn)youself,則替換為your消返。

&?保存查找串以便在替換串中引用?s/my/**&**/ ?符號(hào)&代表查找串载弄。my將被替換為**my**

\<?詞首定位符?/\

\>?詞尾定位符?/my\>/ ?匹配包含以my結(jié)尾的單詞的行

x\{m\}?連續(xù)m個(gè)x?/9\{5\}/ 匹配包含連續(xù)5個(gè)9的行

x\{m,\}?至少m個(gè)x?/9\{5,\}/ ?匹配包含至少連續(xù)5個(gè)9的行

x\{m,n\}?至少m個(gè)耘拇,但不超過n個(gè)x?/9\{5,7\}/ ?匹配包含連續(xù)5到7個(gè)9的行

?6.范例

?6.1 p命令

命令p用于顯示模式空間的內(nèi)容。默認(rèn)情況下宇攻,sed把輸入行打印在屏幕上惫叛,選項(xiàng)-n用于取消默認(rèn)的打印操作。當(dāng)選項(xiàng)-n和命令p同時(shí)出現(xiàn)時(shí),sed可打印選定的內(nèi)容逞刷。

?sed '/my/p' datafile

#默認(rèn)情況下嘉涌,sed把所有輸入行都打印在標(biāo)準(zhǔn)輸出上。如果某行匹配模式my夸浅,p命令將把該行另外打印一遍仑最。

sed -n '/my/p' datafile

#選項(xiàng)-n取消sed默認(rèn)的打印,p命令把匹配模式my的行打印一遍帆喇。

?6.2 d命令

命令d用于刪除輸入行警医。sed先將輸入行從文件復(fù)制到模式空間里,然后對(duì)該行執(zhí)行sed命令坯钦,最后將模式空間里的內(nèi)容顯示在屏幕上预皇。如果發(fā)出的是命令d,當(dāng)前模式空間里的輸入行會(huì)被刪除婉刀,不被顯示深啤。

sed '$d' datafile

#刪除最后一行,其余的都被顯示

sed '/my/d' datafile

#刪除包含my的行路星,其余的都被顯示

?6.3 s命令

sed 's/^My/You/g' datafile

#命令末端的g表示在行內(nèi)進(jìn)行全局替換溯街,也就是說如果某行出現(xiàn)多個(gè)My,所有的My都被替換為You洋丐。

sed -n '1,20s/My$/You/gp' datafile

#取消默認(rèn)輸出呈昔,處理1到20行里匹配以My結(jié)尾的行,把行內(nèi)所有的My替換為You友绝,并打印到屏幕上堤尾。


sed 's#My#Your#g' datafile

#緊跟在s命令后的字符就是查找串和替換串之間的分隔符。分隔符默認(rèn)為正斜杠迁客,但可以改變郭宝。無論什么字符(換行符、反斜線除外)掷漱,只要緊跟s命令粘室,就成了新的串分隔符。

?6.4 e選項(xiàng)

-e是編輯命令卜范,用于sed執(zhí)行多個(gè)編輯任務(wù)的情況下衔统。在下一行開始編輯前,所有的編輯動(dòng)作將應(yīng)用到模式緩沖區(qū)中的行上。

sed -e '1,10d' -e 's/My/Your/g' datafile

#選項(xiàng)-e用于進(jìn)行多重編輯锦爵。第一重編輯刪除第1-3行舱殿。第二重編輯將出現(xiàn)的所有My替換為Your。因?yàn)槭侵鹦羞M(jìn)行這兩項(xiàng)編輯(即這兩個(gè)命令都在模式空間的當(dāng)前行上執(zhí)行)险掀,所以編輯命令的順序會(huì)影響結(jié)果沪袭。

?6.5 r命令

r命令是讀命令。sed使用該命令將一個(gè)文本文件中的內(nèi)容加到當(dāng)前文件的特定位置上樟氢。

sed '/My/r introduce.txt' datafile

#如果在文件datafile的某一行匹配到模式My冈绊,就在該行后讀入文件introduce.txt的內(nèi)容。如果出現(xiàn)My的行不止一行嗡害,則在出現(xiàn)My的各行后都讀入introduce.txt文件的內(nèi)容焚碌。

?6.6 w命令

sed -n '/hrwang/w me.txt' datafile

?6.7 a\ 命令

a\ 命令是追加命令,追加將添加新文本到文件中當(dāng)前行(即讀入模式緩沖區(qū)中的行)的后面霸妹。所追加的文本行位于sed命令的下方另起一行十电。如果要追加的內(nèi)容超過一行,則每一行都必須以反斜線結(jié)束叹螟,最后一行除外鹃骂。最后一行將以引號(hào)和文件名結(jié)束。

sed '/^hrwang/a\

>hrwang and mjfan are husband\

>and wife' datafile

#如果在datafile文件中發(fā)現(xiàn)匹配以hrwang開頭的行罢绽,則在該行下面追加hrwang and mjfan are husband and wife

?6.8 i\ 命令

i\ 命令是在當(dāng)前行的前面插入新的文本畏线。

?6.9 c\ 命令

sed使用該命令將已有文本修改成新的文本。

?6.10 n命令

sed使用該命令獲取輸入文件的下一行良价,并將其讀入到模式緩沖區(qū)中寝殴,任何sed命令都將應(yīng)用到匹配行緊接著的下一行上。

sed '/hrwang/{n;s/My/Your/;}' datafile

注:如果需要使用多條命令明垢,或者需要在某個(gè)地址范圍內(nèi)嵌套地址蚣常,就必須用花括號(hào)將命令括起來,每行只寫一條命令痊银,或這用分號(hào)分割同一行中的多條命令抵蚊。

?6.11 y命令

該命令與UNIX/Linux中的tr命令類似,字符按照一對(duì)一的方式從左到右進(jìn)行轉(zhuǎn)換溯革。例如贞绳,y/abc/ABC/將把所有小寫的a轉(zhuǎn)換成A,小寫的b轉(zhuǎn)換成B致稀,小寫的c轉(zhuǎn)換成C冈闭。

?sed '1,20y/hrwang12/HRWANG^$/' datafile

#將1到20行內(nèi),所有的小寫hrwang轉(zhuǎn)換成大寫豺裆,將1轉(zhuǎn)換成^,將2轉(zhuǎn)換成$捻爷。

#正則表達(dá)式元字符對(duì)y命令不起作用。與s命令的分隔符一樣砚偶,斜線可以被替換成其它的字符河质。

?6.12 q命令

q命令將導(dǎo)致sed程序退出,不再進(jìn)行其它的處理蔑歌。

sed '/hrwang/{s/hrwang/HRWANG/;q;}' datafile

?6.13 h命令和g命令

#cat datafile

My name is hrwang.

Your name is mjfan.

hrwang is mjfan's husband.

mjfan is hrwang's wife.


sed -e '/hrwang/h' -e '$G' datafile

sed -e '/hrwang/H' -e '$G' datafile

#通過上面兩條命令羹应,你會(huì)發(fā)現(xiàn)h會(huì)把原來暫存緩沖區(qū)的內(nèi)容清除,只保存最近一次執(zhí)行h時(shí)保存進(jìn)去的模式空間的內(nèi)容次屠。而H命令則把每次匹配hrwnag的行都追加保存在暫存緩沖區(qū)园匹。

sed -e '/hrwang/H' -e '$g' datafile

sed -e '/hrwang/H' -e '$G' datafile

#通過上面兩條命令,你會(huì)發(fā)現(xiàn)g把暫存緩沖區(qū)中的內(nèi)容替換掉了模式空間中當(dāng)前行的內(nèi)容劫灶,此處即替換了最后一行裸违。而G命令則把暫存緩沖區(qū)的內(nèi)容追加到了模式空間的當(dāng)前行后。此處即追加到了末尾本昏。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末供汛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子涌穆,更是在濱河造成了極大的恐慌怔昨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿稀,死亡現(xiàn)場(chǎng)離奇詭異趁舀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祝沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門矮烹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罩锐,你說我怎么就攤上這事奉狈。” “怎么了唯欣?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵嘹吨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我境氢,道長(zhǎng)蟀拷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任萍聊,我火速辦了婚禮问芬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寿桨。我一直安慰自己此衅,他們只是感情好强戴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挡鞍,像睡著了一般骑歹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墨微,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天道媚,我揣著相機(jī)與錄音,去河邊找鬼翘县。 笑死最域,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锈麸。 我是一名探鬼主播镀脂,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼忘伞!你這毒婦竟也來了薄翅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤虑省,失蹤者是張志新(化名)和其女友劉穎匿刮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體探颈,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟丸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伪节。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片光羞。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖怀大,靈堂內(nèi)的尸體忽然破棺而出纱兑,到底是詐尸還是另有隱情,我是刑警寧澤化借,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布潜慎,位于F島的核電站,受9級(jí)特大地震影響蓖康,放射性物質(zhì)發(fā)生泄漏铐炫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一蒜焊、第九天 我趴在偏房一處隱蔽的房頂上張望倒信。 院中可真熱鬧,春花似錦泳梆、人聲如沸鳖悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乘综。三九已至憎账,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘾带,已是汗流浹背鼠哥。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工熟菲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留看政,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓抄罕,卻偏偏與公主長(zhǎng)得像允蚣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子呆贿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 sed 是一種在線編輯器嚷兔,它一次處理一行內(nèi)容。處理時(shí)做入,把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中冒晰,稱為“模式空間”(p...
    699b979fc4da閱讀 988評(píng)論 0 1
  • grep擅長(zhǎng)查找,awk擅長(zhǎng)分析(select)竟块,sed擅長(zhǎng)批量編輯行 概述 SED的英文全稱是 Stream E...
    piziyang12138閱讀 933評(píng)論 0 3
  • grep擅長(zhǎng)查找壶运,awk擅長(zhǎng)分析(select),sed擅長(zhǎng)批量編輯行概述SED的英文全稱是 Stream EDi...
    Arroganter閱讀 1,066評(píng)論 0 7
  • 寫給小晨浪秘。 見字如晤蒋情。 我想到的是干涸的心力下一個(gè)茍延殘喘的人。而我沒到那種因目光短淺而暴躁不安的地步耸携,也沒到那種...
    荒予閱讀 596評(píng)論 3 11
  • 1、結(jié)緣簡(jiǎn)書 不知不覺在簡(jiǎn)書上寫作已有一月之余沟沙。平均下來每天更新一篇文章河劝,一篇平均1000字,仔細(xì)算來尝胆,也有小三萬(wàn)...
    楊一說閱讀 184評(píng)論 0 5