1琐馆、提取列命令:cut
cut [選項(xiàng)] 文件名
選項(xiàng):
-f #提取第幾列
-d 分隔符 #按照指定分隔符對(duì)列進(jìn)行分割(默認(rèn)以 Tab 制表符作為分隔符)
【==> grep提取行规阀,cut提取列】
2. 格式化輸出命令:printf
printf '輸出類型輸出格式' 輸出內(nèi)容
printf '輸出類型 輸出格式' 輸出內(nèi)容
輸出類型:
%ns 輸出字符串。n表示輸出的字符數(shù)
%ni 輸出整數(shù)瘦麸。n表示輸出的數(shù)字個(gè)數(shù)
%m.nf 輸出浮點(diǎn)數(shù)谁撼。m表示輸出的總位數(shù)(整數(shù)位+小數(shù)位),n表示輸出的小數(shù)位數(shù)滋饲,m-n為整數(shù)位數(shù)
輸出格式:
\a 輸出警告聲音(限定本地終端)
\b 輸出退格鍵(Backspace)
\f 清除屏幕
\n 換行
\r 回車
\t 水平制表符(Tab鍵)
\v 垂直制表符(Tab鍵)
echo與printf比較:
echo會(huì)按照輸入的格式進(jìn)行輸出顯示厉碟,printf若不進(jìn)行格式化控制則不會(huì)按照輸入的格式輸出,echo相當(dāng)于是在printf的基礎(chǔ)上進(jìn)行了改善的輸出方式
在awk命令輸出時(shí)支持print和printf命令
print與printf比較:
print會(huì)在每個(gè)輸出之后自動(dòng)加上一個(gè)換行符(Linux默認(rèn)沒有print命令)屠缭,printf是標(biāo)準(zhǔn)的格式輸出命令箍鼓,不會(huì)自動(dòng)加入換行符,需要通過手工方式加入換行符
3. 提取列/字段命令:awk
1)awk使用規(guī)則
提取列/字段:條件符合則執(zhí)行對(duì)應(yīng)動(dòng)作呵曹;無條件時(shí)都會(huì)執(zhí)行動(dòng)作
awk '條件1{動(dòng)作1}條件2{動(dòng)作2}...' 文件名
條件(Pattern):
一般使用關(guān)系表達(dá)式作為條件
動(dòng)作(Action):
格式化輸出(如:printf輸出)
流程控制語(yǔ)句(如:for循環(huán))
2)awk處理過程描述:
==> 逐行處理數(shù)據(jù)
Step1-讀取第1行:首先讀取文檔中的第一行數(shù)據(jù)
Step2-判斷條件:若滿足條件款咖,則執(zhí)行動(dòng)作;本例為無條件奄喂,即所有都滿足執(zhí)行
Step3-建立變量:將文件名student.txt賦值給1、
3富腊、$4分別對(duì)應(yīng)作為第1行的第1、2域帐、3赘被、4個(gè)字段
Step4-執(zhí)行動(dòng)作:輸出第2個(gè)字段是整、水平制表符、第4個(gè)字段民假、換行符
Step5-讀取第2行贰盗,判斷條件,執(zhí)行動(dòng)作
Step6-讀取第3行阳欲,...
...
StepN-直至將文檔中的所有行都讀取完成舵盈,執(zhí)行完成動(dòng)作為止
3)awk與cut對(duì)比:
- awk對(duì)文檔中按每個(gè)字段提取,逐行處理數(shù)據(jù)球化,不需要受分隔符的限制秽晚,使用范圍相對(duì)更廣;cut對(duì)文檔中按列提取筒愚,嚴(yán)格收分隔符限制
- 文檔中的數(shù)據(jù)赴蝇,若有規(guī)范分隔符,cut和awk均可使用巢掺;若無規(guī)范的分隔符(如:不同長(zhǎng)度的空格符)句伶,則建議使用awk按照字段提取
4、文本內(nèi)容替換命令:sed
sed:是一種幾乎包括在所有Unix平臺(tái)(包括Linux)的輕量級(jí)流編輯器陆淀。sed主要用來將數(shù)據(jù)進(jìn)行選取考余、替換、刪除轧苫、新增的命令
sed [選項(xiàng)] '[動(dòng)作]' 文件名
選項(xiàng):
-n 把經(jīng)過sed命令處理的行進(jìn)行輸出楚堤,不加"-n"則會(huì)在sed處理數(shù)據(jù)的基礎(chǔ)上再疊加輸出所有數(shù)據(jù)
-e 允許對(duì)輸入數(shù)據(jù)應(yīng)用多條sed命令編輯
-i 不加"-i"只是臨時(shí)修改(把修改的效果顯示在屏幕上,實(shí)際的文件并未變化)含懊;
加"-i"則會(huì)修改到實(shí)際的文件內(nèi)容身冬,此時(shí)需要防止誤操作;不輸出到屏幕
動(dòng)作:
p 打印整行岔乔。輸出指定的行酥筝,如:'np',表示第n行
d 刪除整行雏门。刪除指定的行
i 行前插入嘿歌。在當(dāng)前行的前面插入一行or多行
a 行后追加。在當(dāng)前行的后面添加一行or多行
c 替換整行剿配。用"c"后面的字符串替換原數(shù)據(jù)行
s 替換字串搅幅。用一個(gè)字符串替換另一個(gè)字符串;格式:"行范圍s/舊字串/新字串/g"
5呼胚、排序命令:sort
sort [選項(xiàng)] 文件名
選項(xiàng):
-f 忽略大小寫
-n 以數(shù)值型進(jìn)行排序(默認(rèn)使用字符串型排序)
-r 反向排序(從大到小)
-t 指定分隔符(默認(rèn)分隔符是制表符)
-k n[,m] 按照指定的字段范圍排序:從第n個(gè)字段開始到第m個(gè)字段結(jié)束
(不加'[,m]'則默認(rèn)到整個(gè)行尾)
6息裸、統(tǒng)計(jì)命令:wc
wc [選項(xiàng)] 文件名
選項(xiàng):
-l 只統(tǒng)計(jì)行數(shù)
-w 只統(tǒng)計(jì)單詞數(shù)
-m 只統(tǒng)計(jì)字符數(shù)
練習(xí)
1蝇更、cut命令沪编、awk命令提取列/字段
提取掛載點(diǎn)在根目錄的一行數(shù)據(jù),提取該行數(shù)據(jù)中 Use%字段值年扩,對(duì)應(yīng)位置變量:$4蚁廓,#對(duì)以上提取值處理:以 "%"為分隔符提取第 1列數(shù)據(jù)
【FS內(nèi)置變量】(內(nèi)置分隔符):
【關(guān)系運(yùn)算符】讀取成績(jī)單,判斷并輸出80分及以上的學(xué)生Name($2)厨幻,但不包含Name本身名稱
2相嵌、sed命令操作文本內(nèi)容
查看、刪除整行
行前插入况脆、行后追加
替換整行饭宾、替換字符串
3、統(tǒng)計(jì)命令:wc
統(tǒng)計(jì)當(dāng)前目錄下的文件個(gè)數(shù)