国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux:文本三劍客之a(chǎn)wk

這篇具有很好參考價值的文章主要介紹了Linux:文本三劍客之a(chǎn)wk。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、awk編輯器

1.1 awk概述

  • awk:是一種處理文本文件的語言,是一個強(qiáng)大的文本分析工具。

1.2 awk工作原理

  • awk:逐行讀取文本,默認(rèn)以空格tab鍵為分隔符進(jìn)行分隔,將分隔所得的各個字段保存到內(nèi)建變量中,并按模式或者條件執(zhí)行編輯命令。

1.3 awk與sed的區(qū)別

  • 1、sed命令常用于一整行的處理,而awk比較傾向于將一行分成多個“字段”然后再進(jìn)行處理
  • 2、awk信息的讀入也是逐行讀取的,執(zhí)行結(jié)果可以通過print的功能將字段數(shù)據(jù)打印顯示
  • 3、在使用awk命令的過程中,可以使用邏輯操作符“&&”表示“與”、“||”表示“或”,“!”表示“非”
  • 4、awk還可以進(jìn)行簡單的數(shù)學(xué)運算,如"+、、-、*、/、%、^"分別表示加、減、乘、除、取余和乘方

二、awk的應(yīng)用

2.1 命令格式

awk 選項 ‘模式或條件 {操作}’ 文件1 文件2...
awk -f 腳本文件 文件1 文件2...

2.2 awk常見的內(nèi)建變量(可直接用)

常見內(nèi)建變量 說明
FS 列分割符。指定每行文本的字段分隔符,默認(rèn)為空格或制表位。與"-F"作用相同
NF 當(dāng)前處理的行的字段個數(shù),$NF代表當(dāng)前所在行的最后一個字段
NR 當(dāng)前處理的行的行號(序數(shù))
$0 當(dāng)前處理的行的整行內(nèi)容
$n 當(dāng)前處理行的第n個字段(第n列)
FILENAME 被處理的文件名
RS 行分隔符。awk從文件上讀取資料時,將根據(jù)RS的定義把資料切割成許多條記錄,而awk一次僅讀入一條記錄,以進(jìn)行處理。預(yù)設(shè)值是’\n’

三、awk使用

3.1 按行輸出文本

awk '{print}' testfile2 				#輸出所有內(nèi)容
awk '{print $0}' testfile2 				#輸出所有內(nèi)容
awk 'NR==1,NR==3{print}' testfile2		#輸出第 1~3 行內(nèi)容
awk '(NR>=1)&&(NR<=3){print}' testfile2	#輸出第 1~3 行內(nèi)容
awk 'NR==1||NR==3{print}' testfile2		#輸出第1行、第3行內(nèi)容
awk '(NR%2)==1{print}' testfile2 		#輸出所有奇數(shù)行的內(nèi)容
awk '(NR%2)==0{print}' testfile2		#輸出所有偶數(shù)行的內(nèi)容
awk '/^root/{print}' /etc/passwd		#輸出以 root 開頭的行
awk '/nologin$/{print}' /etc/passwd		#輸出以 nologin 結(jié)尾的行

Linux:文本三劍客之a(chǎn)wk
Linux:文本三劍客之a(chǎn)wk
Linux:文本三劍客之a(chǎn)wk
Linux:文本三劍客之a(chǎn)wk
Linux:文本三劍客之a(chǎn)wk

awk '(NR%2)==1 {print NR}' testfile1
awk '(NR%2)==1 {print NR $0}' testfile1
awk '(NR%2)==1 {print NR','$0}' testfile1
awk '(NR%2)==1 {print NR","$0}' testfile1 #只有用雙引號才能指定間隔符號,否則默認(rèn)使用空格符號,上面的單引號加不加沒區(qū)別

Linux:文本三劍客之a(chǎn)wk

awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END {print x}' /etc/passwd		#統(tǒng)計以/bin/bash 結(jié)尾的行數(shù),等同于 grep -c "/bin/bash$" /etc/passwd

BEGIN模式表示:在處理指定的文本之前,需要先執(zhí)行BEGIN模式中指定的動作;awk再處理指定的文本,之后再執(zhí)行END模式中指定的動作,END{}語句塊中,往往會放入打印結(jié)果等語句
Linux:文本三劍客之a(chǎn)wk

3.2 按字段輸出文本

awk -F: '/^root/ {print $2}' /etc/passwd    #輸出root開頭的第二個字段
awk -F: '/^root/ {print $2,$4}' /etc/passwd #輸出root開頭的第二、四字段
awk -F: '/^root/ {print $0}' /etc/passwd    #輸出root開頭的行
awk -F: '/^root/ {print $NF}' /etc/passwd   #輸出root開頭的最后一個字段

Linux:文本三劍客之a(chǎn)wk

awk -F ":" '!($3<200){print}' /etc/passwd 	               #輸出第3個字段的值不小于200的行
awk 'BEGIN {FS=":"};{if($3>=1000){print}}' /etc/passwd	   #以冒號間隔,打印第三個字段的值大于等于1000的行
awk -F ":" '{max=($3>=$4)?$3:$4;{print max}}' /etc/passwd  #($3>$4)?$3:$4;三元運算符,如果第3個字段的值大于等于第4個字段的值,則把第3個字段的值賦給max,否則第4個字段的值賦給max,然后打印出來
awk -F ":" '{print NR,$0}' /etc/passwd		               #輸出每個行號,最后統(tǒng)計總行數(shù)
awk -F ":" '$7~"/bash"{print $1}' /etc/passwd	           #輸出以冒號分隔且第7個字段中包含/bash的行的第1個字段
awk -F ":" '($1~"root")&&(NF==7){print $1,$2}' /etc/passwd #輸出第1個字段中包含root且有7個字段的行的第1、2個字段
awk -F ":" '($7!="/bin/bash")&&($7!="/sbin/nologin"){print}' /etc/passwd	#輸出第7個字段既不為/bin/bash,也不為/sbin/nologin的所有行

3.3 通過管道、雙引號調(diào)用 Shell 命令

echo $PATH | awk 'BEGIN{RS=":"};END{print NR}'		#統(tǒng)計以冒號分隔的文本段落數(shù),打印行號
awk -F: '/bash$/{print | "wc -l"}' /etc/passwd		#調(diào)用 wc -l 命令統(tǒng)計使用 bash 的用戶個數(shù),等同于 grep -c "bash$" /etc/passwd
free -m | awk '/Mem:/ {print int($3/($3+$4)*100)"%"}'	#查看當(dāng)前內(nèi)存使用百分比
top -b -n 1 | grep Cpu | awk -F ',' '{print $4}' | awk '{print $1}'		#查看當(dāng)前CPU空閑率,(-b -n 1 表示只需要1次的輸出結(jié)果)
date -d "$(awk -F "." '{print $1}' /proc/uptime) second ago" +"%F %H:%M:%S"		#顯示上次系統(tǒng)重啟時間,等同于uptime;second ago為顯示多少秒前的時間,+"%F %H:%M:%S"等同于+"%Y-%m-%d %H:%M:%S"的時間格式。/proc/uptime 第一列輸出的是:系統(tǒng)啟動到現(xiàn)在的時間(以秒為單位);第二列輸出的是:系統(tǒng)空閑的時間(以秒為單位)
date -d "$(date -d"1 month" +"%Y%m01") -3 day" +"%Y%m%d"  #當(dāng)月倒數(shù)第三天
date +"%Y%m01"        #當(dāng)月第一天
awk 'BEGIN {n=0 ; while ("w" | getline) n++ ; {print n-2}}'	#調(diào)用w命令,并用來統(tǒng)計在線用戶數(shù)
awk 'BEGIN {"hostname" | getline ; {print $0}}'			#調(diào)用 hostname,并輸出當(dāng)前的主機(jī)名
seq 10 | awk '{getline; print $0}'      #獲取偶數(shù)行
seq 10 | awk '{print $0; getline}'      #獲取基數(shù)行

Linux:文本三劍客之a(chǎn)wk
當(dāng)getline左右無重定向符“<”或“|”時,awk首先讀取到了第一行,就是1,然后getline,就到了1下面的第二行,就是2,因為getline之后,awk會改變對應(yīng)的NF,NR,F(xiàn)NR和$0等內(nèi)部變量,所以此時的$0的值就不再是1,而是2了,然后將它打印出來。 當(dāng)getline左右有重定向符“<”或“|”時,getline則作用于定向輸入文件,由于該文件是剛打開,并沒有被awk讀入一行,只是getline讀入,那么getline返回的是該文件的第一行,而不是隔行。 FNR:awk當(dāng)前讀取的記錄數(shù),其變量值小于等于NR(比如當(dāng)讀取第二個文件時,F(xiàn)NR是從0開始重新計數(shù),而NR不會)。 NR==FNR:用于在讀取兩個或兩個以上的文件時,判斷是不是在讀取第一個文件文章來源地址http://www.zghlxwxcb.cn/news/detail-454662.html

awk -F: '$1 ~ /root/ && $NF ~ /\/bin\/bash/ {print}' /etc/passwd #輸出/etc/passwd/文件中首字段包含 root 且最后一個字段包含/bin/bash/的行,取反則在“~”加上“!”

到了這里,關(guān)于Linux:文本三劍客之a(chǎn)wk的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Linux:文本三劍客之a(chǎn)wk

    Linux:文本三劍客之a(chǎn)wk

    awk:是一種 處理文本文件的語言 ,是一個強(qiáng)大的 文本分析工具 。 awk: 逐行讀取文本 ,默認(rèn)以 空格 或 tab鍵 為分隔符 進(jìn)行分隔 ,將分隔所得的 各個字段 保存到 內(nèi)建變量 中,并按模式或者條件執(zhí)行編輯命令。 1、sed命令常用于一整行的處理,而awk比較 傾向于將一行分成

    2024年02月05日
    瀏覽(95)
  • linux文本三劍客---grep,sed,awk

    linux文本三劍客---grep,sed,awk

    目錄 grep 什么是grep? grep實例演示 命令參數(shù): 案例演示: sed 概念: ?常用選項: 案例演示: awk 概念: awk常用命令選項: awk變量: 內(nèi)置變量 自定義變量 awk的簡單案例 在“a b c d”的d后面插入三個字符 統(tǒng)計tcp連接狀態(tài)數(shù)量 ?統(tǒng)計日志中狀態(tài)碼非200的IP的次數(shù) 什么是grep?

    2024年02月13日
    瀏覽(93)
  • Linux文本三劍客(grep、sed、awk)

    Linux文本三劍客(grep、sed、awk)

    目錄 grep 1、什么是grep和rgrep? 2、使用grep 2.1、命令格式 2.2、命令功能 2.3、命令參數(shù) 3、實戰(zhàn)演示 sed 1、認(rèn)識sed 2、使用sed 2.1、命令格式 2.2、常用選項options 2.3、地址定界 2.4、編輯命令command 3、sed用法演示 3.1、常用選項用法演示 3.2、sed地址定界演示 3.3、編輯命令command演示

    2024年02月03日
    瀏覽(97)
  • Linux文本三劍客---grep、sed、awk

    Linux文本三劍客---grep、sed、awk

    awk、grep、sed是linux操作文本的三大利器,三者的功能都是處理文本,但側(cè)重點各不相同,其中屬awk功能最強(qiáng)大,但也最復(fù)雜。grep更適合單純的查找或匹配文本,sed更適合編輯匹配到的文本,awk更適合格式化文本,對文本進(jìn)行較復(fù)雜格式處理。 1、grep 1.1 命令格式 1.2命令功能

    2024年02月14日
    瀏覽(97)
  • 快速上手Linux核心命令(五):文本處理三劍客

    快速上手Linux核心命令(五):文本處理三劍客

    目錄 前言 正則表達(dá)式 第一劍客 grep 第二劍客 sed 第三 劍客 awk 小結(jié) 上一篇中已經(jīng)預(yù)告,我們這篇主要說Linux文本處理 三劍客 。他們分別是 grep 、 sed 、 awk 。既然能被業(yè)界稱為三劍客,可見其在Linux命令中占有舉足輕重得地位。所以呢,這里也專門寫一篇文章說一說其用法。

    2023年04月25日
    瀏覽(21)
  • Linux 文本處理三劍客:grep、sed 和 awk

    awk、grep、sed是linux操作文本的三大利器,合稱文本三劍客,也是必須掌握的linux命令之一。三者的功能都是處理文本,但側(cè)重點各不相同,其中屬awk功能最強(qiáng)大,但也最復(fù)雜。grep更適合單純的查找或匹配文本,sed更適合編輯匹配到的文本,awk更適合格式化文本,對文本進(jìn)行較

    2024年01月17日
    瀏覽(97)
  • Linux:管道命令與文本處理三劍客(grep、sed、awk)

    Linux:管道命令與文本處理三劍客(grep、sed、awk)

    眾所周知,bash命令執(zhí)行的時候會輸出信息,但有時這些信息必須要經(jīng)過幾次處理之后才能得到我們想要的格式,此時應(yīng)該如何處置?這就牽涉到 管道命令(pipe) 了。管道命令使用的是 | 這個界定符號。另外,管道命令與連續(xù)執(zhí)行命令是不一樣的,這點下面我們會說明。 我們先

    2023年04月18日
    瀏覽(35)
  • 文本三劍客之 awk

    文本三劍客之 awk

    Linux/UNIX 系統(tǒng)中,awk 是一個功能強(qiáng)大的編輯工具。逐行讀取輸入文本 以空格作為分割符,多個空格他會自動壓縮成一個空格 AWK信息的讀入也是逐行指定的匹配模式進(jìn)行查找,對符合條件的內(nèi)容進(jìn)行格式化輸出或者過濾處理. 1按照命令找指定的行? 2.找到的行 打印,操作 awk

    2024年02月08日
    瀏覽(23)
  • 文本三劍客之~~~sed命令

    文本三劍客之~~~sed命令

    sed是一種流編輯器,流編輯器會在編輯器處理數(shù)據(jù)之前基于預(yù)先提供的一組規(guī)則來編輯數(shù)據(jù)流。 sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。 包括讀取,執(zhí)行和顯示三個過程 讀?。簊ed從輸入流(文件,管道

    2024年02月05日
    瀏覽(37)
  • 文本三劍客&正則表達(dá)式2

    文本三劍客&正則表達(dá)式2

    主要是對文件內(nèi)容按照行的方式進(jìn)行增刪改查 工作流程 sed的工作流程主要包括** 讀取、執(zhí)行和顯示 **三個過程 讀取 sed從 輸入流 (文件、管道、標(biāo)準(zhǔn)輸入) 中讀取一行內(nèi)容并存儲到臨時的緩沖區(qū)中(又稱模式空間,pattern space ) 執(zhí)行 默認(rèn)情況下,所有的sed命令都在模式空間中

    2024年02月05日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包