Linux基礎(chǔ)課程系列:
1. grep
grep:一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式匹配模式搜索文本红碑,并把匹配的行打印出來
格式:grep [options] pattern file
([]內(nèi)的部分可以省略)
常見參數(shù) | 含義 |
---|---|
-w | word 精確查找某個(gè)關(guān)鍵詞pattern |
-c | 統(tǒng)計(jì)匹配成功的行的數(shù)量 |
-v | 反向選擇各聘,即輸出沒有沒有匹配的行 |
-n | 顯示匹配成功的行所在的行號(hào) |
-r | 從目錄中查找pattern |
-e | 指定多個(gè)匹配模式 |
-f | 從指定文件中讀取要匹配的pattern |
-i | 忽略大小寫 |
-E | 匹配正則表達(dá)式(在-E 之后碌上,正則表達(dá)式的符號(hào)不需要加反斜杠) |
2. sed
sed:流編輯器斥铺,一般用來對文本進(jìn)行增刪改查(sed是以行為單位來處理的)雄嚣。
用法:sed [-options] 'script' file(s)
- options
常見參數(shù) | 含義 |
---|---|
-n | 取消默認(rèn)輸出菇绵,只顯示經(jīng)過sed處理或匹配的行(常用) |
-e | 直接在命令模式上進(jìn)行sed 的動(dòng)作編輯篮绰,接要執(zhí)行的一個(gè)或者多個(gè)命令 |
-i | 直接修改讀取的文件內(nèi)容后雷,不輸出。(除非使用-i修改內(nèi)容,其他時(shí)候使用sed臀突,原文件不會(huì)發(fā)生改變勉抓。不建議隨便使用-i參數(shù)) |
-
script
'script'的格式:[address][!] command
。address和!可以被省略候学,command不可以被省略藕筋。
常見'script' address | 含義 |
---|---|
2 | 第2 行 |
2,4 | 第2 行到第4 行 |
2,$ | 第2 行到最后一行,$ 表示最后 |
2~3 | 從第2 行開始梳码,每隔3 行取一行 |
2,+4 | 從第2 行到2+4 行 |
/pattern/ | 匹配上pattern 的行 |
[!] 表示否定隐圾,取反(相當(dāng)于grep -v)
常見'script' command | 含義 |
---|---|
a | append,在指定行的后增加一行掰茶,內(nèi)容為a 的后面接的字符串(增) |
i | insert暇藏,在指定行的前增加一行,內(nèi)容為i 的后面接的字符串(增) |
d | delete濒蒋,刪除某一行或者某幾行盐碱,也可以指定刪除匹配上的行(刪) |
c | change,改變指定行的內(nèi)容(改) |
s | 替換啊胶,使用格式為's/pattern/new/[flags]' 甸各,把pattern替換成new垛贤,默認(rèn)只替換一個(gè)焰坪,可以指定flags。flag設(shè)為g 時(shí)和vim中一樣聘惦,是全局替換某饰。設(shè)為1 是為出現(xiàn)第一次時(shí)進(jìn)行替換。(改) |
y | 轉(zhuǎn)換善绎,實(shí)現(xiàn)字符一對一轉(zhuǎn)換黔漂,格式'y/inchars/outchars/' 。incharts和outcharts的字符數(shù)必須一致禀酱。(改) |
p | print炬守,把匹配或修改過的行打印出來,通常與–n參數(shù)合用(查) |
3. awk
awk是一個(gè)強(qiáng)大的文本分析工具剂跟,相對于grep的查找减途,sed的編輯,awk在其對數(shù)據(jù)分析并生成報(bào)告時(shí)曹洽,顯得尤為強(qiáng)大鳍置。簡單來說awk就是把文件逐行的讀入,以空格為默認(rèn)分隔符將每行切片送淆,切開的部分再進(jìn)行各種分析處理税产。awk有3個(gè)不同版本: awk、nawk和gawk,未作特別說明辟拷,一般指gawk撞羽。gawk 是 AWK 的 GNU 版本。
用法:awk [options] '{script}' file
梧兼。
- options
常見參數(shù) | 含義 |
---|---|
-F | fields放吩,設(shè)置字段(列)分隔符(默認(rèn)是空白字符,也就是空格和\t都會(huì)被分隔羽杰。??cut的分隔只識(shí)別\t)渡紫; |
-v | var=value 定義awk程序中的一個(gè)變量及其默認(rèn)值 |
- script
基礎(chǔ)結(jié)構(gòu): ' {script} '
匹配結(jié)構(gòu): ' /pattern/{script} '
擴(kuò)展結(jié)構(gòu): 'BEGIN{script} {script} END{script}'
awk 在讀取一行文本時(shí),會(huì)用預(yù)定義的字段分隔符劃分每個(gè)數(shù)據(jù)字段考赛,并分配給一個(gè)變量惕澎。
$0 代表整個(gè)文本行;
$1 代表文本行中的第1個(gè)數(shù)據(jù)字段颜骤;
……
$NF 代表文本行中的最后一個(gè)數(shù)據(jù)字段
awk 默認(rèn)的字段分隔符是任意空白字符(如:空格or 制表符)唧喉,也可以用-F 參數(shù)自定義分隔符
awk內(nèi)置變量
FS :定義輸入字段分隔符,F(xiàn)ield Separator忍抽,同–F
RS :定義輸入記錄分隔符八孝,Record Separator
OFS :定義輸出字段分隔符,Out Field Separator
ORS :定義輸出記錄分隔符鸠项,Out Record Separator
NF :數(shù)據(jù)文件中的字段總數(shù)干跛,可以簡單理解為列數(shù)
NR
:已處理的輸入記錄數(shù),可以簡單理解為行數(shù)
也可以通過-v 參數(shù)自定義變量或傳遞外部變量awk 條件和循環(huán)語句:
if:條件判斷
awk ' { if (判斷條件) {yes} else {no} } '
for:循環(huán)語句
awk ' { for (循環(huán)條件) {循環(huán)語句} } 'awk 數(shù)學(xué)運(yùn)算:
+(加)祟绊,-(減)楼入, (乘),^(冪)牧抽,/(除)嘉熊,*(平方),%(取余)
int(x) x的整數(shù)部分扬舒,取靠近零一側(cè)的值
log(x) x的自然對數(shù)