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

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》

這篇具有很好參考價(jià)值的文章主要介紹了Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介

awk是行處理器: 相比較屏幕處理的優(yōu)點(diǎn),在處理龐大文件時(shí)不會(huì)出現(xiàn)內(nèi)存溢出或是處理緩慢的問題,通常用來格式化文本信息

awk處理過程: 依次對(duì)每一行進(jìn)行處理,然后輸出

1)awk命令會(huì)逐行讀取文件的內(nèi)容進(jìn)行處理
2)awk以’:’為分隔符,將第1行數(shù)據(jù)格式化為7段,每段數(shù)據(jù)存入$1--$7變量中。$0存儲(chǔ)這1行數(shù)據(jù)?
3)一行處理完成繼續(xù)處理下一行,直到此文件讀取結(jié)束

?awk常見用法
awk 選項(xiàng) ?'模式或條件 { 編輯指令 }' 文件1 文件2 … ?
awk ?-f ?腳本文件 文件1 文件2 …

特殊的內(nèi)建變量

$0 ? ? ? ? ? 表示整個(gè)當(dāng)前行
$1 ? ? ? ? ? 每行第一個(gè)字段
NF ? ? ? ? ?字段數(shù)量變量
NR ? ? ? ? ?每行的記錄號(hào),多文件記錄遞增
FNR ? ? ? ?與NR類似,不過多文件記錄不遞增,每個(gè)文件都從1開始
\t ? ? ? ? ? ?制表符
\n ? ? ? ? ? 換行符
FS ? ? ? ? ?BEGIN時(shí)定義分隔符
RS ? ? ? 輸入的記錄分隔符, 默認(rèn)為換行符(即文本是按一行一行輸入)
~ ? ? ? ? ? ?匹配,與==相比不是精確比較
!~ ? ? ? ? ? 不匹配,不精確比較
== ? ? ? ? 等于,必須全部相等,精確比較
!= ? ? ? ? ? 不等于,精確比較
&& ? ? ?邏輯與
|| ? ? ? ? ? ? 邏輯或
+ ? ? ? ? ? ?匹配時(shí)表示1個(gè)或1個(gè)以上
/[0-9][0-9]+/ ? 兩個(gè)或兩個(gè)以上數(shù)字
/[0-9][0-9]*/ ? ?一個(gè)或一個(gè)以上數(shù)字
FILENAME 文件名
OFS ? ? ?輸出字段分隔符, 默認(rèn)也是空格,可以改為制表符等
ORS ? ? ? ?輸出的記錄分隔符,默認(rèn)為換行符,即處理結(jié)果也是一行一行輸出到屏幕
-F'[:#/]' ? 定義三個(gè)分隔符


?用法示例:輸出

awk '{print}' test.txt?

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

簡(jiǎn)單的輸入全部?

第1,3字段

?awk '{print $1,$3}' test.txt?

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

輸出奇數(shù)行%2求模運(yùn)算,余數(shù)為1是奇數(shù),0為偶數(shù)?
? awk '(NR%2)==1{print}' test.txt?

? 輸出偶數(shù)行
? awk '(NR%2)==0{print}' test.txt?

輸出以root開頭的行
?awk '/^root/{print}' /etc/passwd

?輸出以……結(jié)尾的行
? awk '/nologin$/{print}' /etc/passwd

統(tǒng)計(jì)以/bin/bash結(jié)尾的行=== grep -c "/bin/bash$"
awk 'BEGIN {x=0} ; /\/bin\/bash$/{x++};END {print x}' /etc/passwd

統(tǒng)計(jì)以空行分割的文本段落數(shù)
awk 'BEGIN{RS=""};END{print NR}' /etc/sysctl.conf?


按字段輸出文本??

輸出每行中以空格或制表位分割的第3個(gè)字段
awk '{print $3}' test.txt??

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

?密碼為空的行?

awk -F ":" '$2==""{print}' /etc/shadow

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

密碼為空的行?

awk 'BEGIN {FS==":"}; $2==""{print}' /etc/shadow

?輸出以‘:’分割,第7字段包含/bash,的行的第1個(gè)字段
awk -F: '$7~"/bash"{print $1}' /etc/passwd

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

輸出第1個(gè)字段包含nfs;并且包含8個(gè)字段的行的第1,2字段
awk '($1~"nfs")&&(NF==8){print $1,$2}' /etc/services??

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器

輸出第7個(gè)字段不是/bin/bsh也不是/sbin/nologin的行
awk -F: '($7!="/bin/bsh")&&($7!="/sbin/nologin"){print}' /etc/passwd?


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

調(diào)用wc -l 命令統(tǒng)計(jì)使用bash的用戶個(gè)數(shù)
awk -F: '/bash$/{print | "wc -l"}' /etc/passwd

===等同于下列命令
grep -c "bash$" /etc/passwd

調(diào)用w命令,統(tǒng)計(jì)在線用戶數(shù)
awk 'BEGIN {while ("w" |getline) n++; {print n-2}}'

調(diào)用hostname,并輸出當(dāng)前主機(jī)名
awk 'BEGIN { "hostname" |getline ; print $0}'


分割?

awk? ? ? -F分割的字符? ? ? '{print $第幾個(gè)}'

舉一個(gè)簡(jiǎn)單的例子?,我們檢索出cat /etc/passwd? 里的root

cat /etc/passwd | grep '^root'

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器?用:分割開,去除最后一段

cat /etc/passwd | grep '^root'| awk -F: '{print $7}'

Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》,linux,運(yùn)維,服務(wù)器文章來源地址http://www.zghlxwxcb.cn/news/detail-664170.html

到了這里,關(guān)于Linux:shell腳本:基礎(chǔ)使用(6)《正則表達(dá)式-awk工具》的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Linux Shell 腳本編程學(xué)習(xí)之【第3章 正則表達(dá)式 (第一部分)】

    1、正則表達(dá)式是由一串字符和元字符構(gòu)成的字符串,簡(jiǎn)稱 RE(Regular Expression)。 2、正則表達(dá)式起到數(shù)據(jù)過濾作用。 3、POSIX 標(biāo)準(zhǔn)將正則表達(dá)式分為兩類:基本的正則表達(dá)式和擴(kuò)展的正則表達(dá)式,大部分 Linux 應(yīng)用和工具僅支持基本的正則表達(dá)式。 Linux Shell 以一串字符作為表達(dá)式

    2024年02月16日
    瀏覽(24)
  • Linux Shell 腳本編程學(xué)習(xí)之【第3章 正則表達(dá)式 (第二部分) grep命令】

    1、文本搜索工具 2、GREP 是Global search Regular Expression and Print out the line的簡(jiǎn)稱,即全面搜索正則表達(dá)式并把行打印出來。 3、grep命令的模式十分靈活,可以是字符串,也可以是變量,還可以是正則表達(dá)式。模式中包含空格,則必須用雙引號(hào)括起來。 選 項(xiàng) 意 義 -c 只輸出匹配行

    2024年02月16日
    瀏覽(18)
  • shell腳本正則表達(dá)式

    shell腳本正則表達(dá)式

    聲明: 以下內(nèi)容為個(gè)人筆記,內(nèi)容不完全正確,請(qǐng)謹(jǐn)慎參考。 含義: 正則表達(dá)式使用的每個(gè)單獨(dú)字符串來描述、匹配一些列符合語法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些符合某個(gè)模式的文本。在Linux中,grep,sed,awk等文本處理工具都支

    2024年04月22日
    瀏覽(28)
  • Shell腳本攻略:通配符、正則表達(dá)式

    Shell腳本攻略:通配符、正則表達(dá)式

    目錄 一、理論 1.通配符 2.正則表達(dá)式 二、實(shí)驗(yàn) 1.通配符 2.正則表達(dá)式 (1)概念 通配符只用于匹配文件名、目錄名等,不能用于匹配文件內(nèi)容,而且是已存在的文件或者目錄。 各個(gè)版本的shell都有通配符,這些通配符是一些特殊的字符, 用戶可以在命令行的參數(shù)中使用這些

    2024年02月07日
    瀏覽(25)
  • Shell編程基礎(chǔ)(十三)正則表達(dá)式

    格式:^ 表達(dá)式 $ 在不同的場(chǎng)景下,定義是一樣,但使用要按照具體的命令去調(diào)用,中間的表達(dá)式都是通用的 普通元字符 所謂元數(shù)據(jù),就是描述數(shù)據(jù)的數(shù)據(jù),在這里就是描述正則的數(shù)據(jù) ^ 表示正則從字符串 整行 起始位置匹配 ^abc 匹配 以abc開始的字符串 $ 表示正則一直匹配到

    2024年02月14日
    瀏覽(23)
  • Linux Shell :正則表達(dá)式

    Linux Shell :正則表達(dá)式

    先來看一句 Shell 代碼: dpkg --list : dpkg 是 Debian 系列 Linux 發(fā)行版(如 Ubuntu)的包管理工具。 --list 選項(xiàng)用于列出所有已安裝的軟件包。 | :這是一個(gè)管道符號(hào),用于將前一個(gè)命令的輸出作為后一個(gè)命令的輸入。在這里, dpkg --list 的輸出被直接傳遞給 grep 命令。 grep -E -o \\\'cu

    2024年02月08日
    瀏覽(49)
  • shell 正則表達(dá)式詳解

    shell 正則表達(dá)式詳解

    目錄 正則表達(dá)式 一,什么是正則表達(dá)式 二,為什么使用正則表達(dá)式 三,如何使用正則表達(dá)式 示例: 四,基本正則表達(dá)式 基本正則表達(dá)式示例: 正則表達(dá)式字符集示例: 五,擴(kuò)展正則表達(dá)式 擴(kuò)展正則表達(dá)式示例: 擴(kuò)展: ? ? ? ?正則表達(dá)式是通過一些特殊字符的排列,

    2024年01月17日
    瀏覽(19)
  • Shell編程之正則表達(dá)式

    Linux中的正則表達(dá)式(regular expression)和通配符(wildcard)都是用于匹配字符串的工具,但它們之間存在一些區(qū)別和應(yīng)用場(chǎng)景的不同。 正則表達(dá)式是描述一種字符串匹配的模式,通過特殊的字符和語法,可以檢查一個(gè)字符串是否匹配某種模式,匹配成功后可以進(jìn)行子串替換、取出符

    2024年02月01日
    瀏覽(21)
  • 【shell編程入門】正則表達(dá)式

    特殊字符 描述 [] 方括號(hào)表達(dá)式,表示匹配的字符集合,例如? [0-9] 、 [abcde] () 標(biāo)記子表達(dá)式起止位置 * 匹配前面的子表達(dá)式零或多次 + 匹配前面的子表達(dá)式一或多次 ? 匹配前面的子表達(dá)式零或一次 轉(zhuǎn)義字符,除了常用轉(zhuǎn)義外,還有: b ?匹配單詞邊界; B ?匹配非單詞邊

    2024年01月23日
    瀏覽(21)
  • MFC使用正則表達(dá)式基礎(chǔ)步驟

    ①頭文件包含 #include ②明確聲明正則表達(dá)式 更多正則表達(dá)式可查閱:https://blog.csdn.net/Next_Second/article/details/126696589 ③CString 轉(zhuǎn)string ④進(jìn)行匹配 完整函數(shù)

    2024年02月16日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包