国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

基本shell編程【3】- 常用的工具awk/sed/sort/uniq/od

2024-06-28 13:19:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
基本shell編程【3】- 常用的工具awk/sed/sort/uniq/odawk

awk是個(gè)很好用的東西,大量使用在linux系統(tǒng)分析的結(jié)果展示處理上。并且可以使用管道, input | awk '' | output1.首先要知道形式awk 'command' file 如 awk '{PRint $0}' a.txt b.txt (后面可以跟一個(gè)或多個(gè)文件)2.command學(xué)習(xí)。command是awk的精髓,其結(jié)構(gòu)為 '條件 {動(dòng)作} 條件2 {動(dòng)作2} ……'2.1關(guān)鍵字學(xué)習(xí):變量名 含義ARGC 命令行變?cè)獋€(gè)數(shù)ARGV 命令行變?cè)獢?shù)組FILENAME 當(dāng)前輸入文件名FNR 當(dāng)前文件中的記錄號(hào)FS 輸入域分隔符,默認(rèn)為一個(gè)空格RS 輸入記錄分隔符NF 當(dāng)前記錄里域個(gè)數(shù)NR 到目前為止記錄數(shù)OFS 輸出域分隔符ORS 輸出記錄分隔符2.2條件動(dòng)作。條件包括: BEGIN END 特殊的兩個(gè),代表初始化和掃尾 判斷:如$1 == "abc" $NR == 5 /^tcp/(表示正則匹配) 也可不寫條件,則表示“全匹配”。從這個(gè)角度來(lái)講 條件本質(zhì)上是一種篩選規(guī)則。動(dòng)作: {printNR,NF,$1,$NF,} {if(xxx) xxx; else xxx;} {for(key in array) xxx}3.實(shí)例學(xué)習(xí):查看機(jī)器建立的各連接數(shù)netstat-n|awk'/^tcp/{++state[$NF]}END{for(keyinstate)printkey,"/t",state[key]}'看每個(gè)連接的占用內(nèi)存byte數(shù)---apacheps aux|grep -v grep|awk '/httpd/ {sum+=$6;n++};END{print sum/n}'根據(jù)逗號(hào)對(duì)abc文件的每一行進(jìn)行split,然后按照第二列進(jìn)行排序,結(jié)果輸出到abc-sort中awk -F, '{print $1}' abc | sort -n -k 2 -t: -r > abc-sortsort命令解釋:-n 是按照數(shù)字排序-k 是按照第二列排-t: 是以:為分隔符-r 是倒敘git查看本次需要提交中變更的內(nèi)容git diff master HEAD --stat | awk '{printf "%s/n",$1}' |grep domain | awk -F'/' '{printf "%s/n",$NF}' | sort批量重命名ls *需要替換* | awk '{org=$0;gsub("需要替換","替換為");system("echo "org" "$0)}'sed

sed用法很多,但是根據(jù)上節(jié)之中,用來(lái)做內(nèi)容替換最多。

sed -i -e 's/^dubbo_provider_version=.*[^e]$/&-pre/' /home/wuji/webroot-xxx/WEB-INF/classes/biz.properties該命令作用是把biz.properties中的dubbo_provider_version=1.0.0 替換為dubbo_provider_version=1.0.0-pre替換的格式為 sed -e ’s/abc/def’ file.txt 把a(bǔ)bc替換為def。其中第一部分的正則在第二部分可以被&取到。注意取到的是從dubbo開頭的全部,而不是.*部分,這是正則表達(dá)式的知識(shí)。并且s可以擴(kuò)展為舉例2:去掉所有html標(biāo)簽$ sed -e 's/<[^>]*>//g' myfile.htmlg的作用:不加只替換第一個(gè)匹配,加了會(huì)替換所有匹配sed -i 直接替換文件而不是在屏幕上輸出學(xué)習(xí)過(guò)vim的朋友們可以輕易的聯(lián)想到vim的命令模式,也有:s/abc/def的寫法,所以linux下的知識(shí)很多都可以觸類旁通。uniq

uniq可以去除重復(fù)行或者做group by的統(tǒng)計(jì)文件file:aabbbsort file | uniq :absort file | uniq -c:2 a3 b之所以和sort組合是要把所有的a弄到一起,防止b后面有a的情況。uniq -d 只顯示重復(fù)的 ,-c只顯示不重復(fù)的,兩者互斥。uniq -dc 只顯示重復(fù)并統(tǒng)計(jì)sort 功能說(shuō)明:將文本文件內(nèi)容加以排序。語(yǔ)  法:sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字符>][+<起始欄位>-<結(jié)束欄位>][--help][--verison][文件]補(bǔ)充說(shuō)明:sort可針對(duì)文本文件的內(nèi)容,以行為單位來(lái)排序。實(shí)例:以第一個(gè)關(guān)鍵列的第二個(gè)字母開始進(jìn)行排序:$ sort -k 1.2 file.txt以關(guān)鍵列第一列的第二個(gè)字母進(jìn)行排序,如果第二個(gè)字母相同則根據(jù)第三列以數(shù)值的標(biāo)準(zhǔn)進(jìn)行降序排列。$ sort -k 1.2,1.2 -k 3,3nr file.txt-k 排序字段,按照-t 分隔符來(lái)區(qū)分的,從0開始。-n 以數(shù)字格式排序。默認(rèn)string方式比較的話,20和9比較是后者大。-r 反序-d 排序時(shí),處理英文字母、數(shù)字及空格字符外,忽略其他的字符。-b 忽略每行前面開始出的空格字符。-u 去除重復(fù)行。(可以利用這個(gè)來(lái)去重sort選項(xiàng)沒(méi)特別需要講的,需要注意的就是-k。-k選項(xiàng)的具體語(yǔ)法格式如下:[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]這個(gè)語(yǔ)法格式可以被其中的逗號(hào)(“,”)分為兩大部分,Start部分和End部分。如果不設(shè)定End部分,那么就認(rèn)為End被設(shè)定為行尾。Start部分也由三部分組成,其中的Modifier部分就是我們之前說(shuō)過(guò)的類似n和r的選項(xiàng)部分。我們重點(diǎn)說(shuō)說(shuō)Start部分的FStart和C.Start。C.Start也是可以省略的,省略的話就表示從本域的開頭部分開始。之前例子中的-k 2和-k 3就是省略了C.Start的例子嘍。FStart.CStart,其中FStart就是表示使用的域,而CStart則表示在FStart域中從第幾個(gè)字符開始算“排序首字符”。同理,在End部分中,你可以設(shè)定FEnd.CEnd,如果你省略.CEnd,則表示結(jié)尾到“域尾”,即本域的最后一個(gè)字符。或者,如果你將CEnd設(shè)定為0(零),也是表示結(jié)尾到“域尾”。od

od命令是分析文件內(nèi)容的工具,很多時(shí)候不知道文件的內(nèi)容編碼,此時(shí)用od命令看文件內(nèi)部的字節(jié)構(gòu)成是最直接的方式,使用方法:od-Ax-tcx4 file 。可以用于分析字符編碼 是否utf-8 ,是否LE,BE至于如何分辨,還需要了解每種編碼的規(guī)則,譬如utf-8一般以三個(gè)字節(jié)來(lái)顯示中文,而gbk則是兩個(gè)。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阆中市| 高雄市| 德州市| 延吉市| 山丹县| 恩平市| 三门县| 桂东县| 屏东县| 湖州市| 久治县| 怀柔区| 铜山县| 浦城县| 汝阳县| 宜黄县| 文安县| 安岳县| 新蔡县| 句容市| 东台市| 洪雅县| 化德县| 江北区| 永丰县| 志丹县| 望江县| 普格县| 库车县| 上栗县| 阳东县| 洱源县| 尼玛县| 南部县| 苍山县| 尚志市| 广州市| 和平区| 淮北市| 杭锦后旗| 松桃|