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

linux文本三劍客詳解

這篇具有很好參考價(jià)值的文章主要介紹了linux文本三劍客詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

awk、grep、sed是linux操作文本的三大利器,合稱文本三劍客。

特點(diǎn):

grep——單純的查找或匹配文本。

sed——編輯匹配到的文本。

awk——格式化文本,對(duì)文本進(jìn)行較復(fù)雜格式處理。

首先了解一下正則表達(dá)式:

匹配字符

. 任意單個(gè)字符

[] 指定范圍的字符

[^] 不在指定范圍的字符

次數(shù)匹配:

* :匹配前面字符任意次

? : 0 或1次

+ :1 次或多次

{m} :匹配m次 次

{m,n} :至少m ,至多n次

?配置次數(shù)

* 匹配前面的字符任意次,包括0次,貪婪模式:盡可能長(zhǎng)的匹配

.* 任意前面長(zhǎng)度的任意字符,不包括0次

\? 匹配其前面的字符0 或 1次

+ 匹配其前面的字符至少1次

{n} 匹配前面的字符n次

{m,n} 匹配前面的字符至少m 次,至多n次

{,n} 匹配前面的字符至多n次

{n,} 匹配前面的字符至少n次

?位置錨定:定位出現(xiàn)的位置


^ : 行首

$ : 行尾

<, \b : 語(yǔ)首

>, \b : 語(yǔ)尾

分組:()

后向引用:\1, \2, ...

?

實(shí)例介紹:

grep

Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái) 。grep也可用于shell腳本,因?yàn)間rep通過(guò)返回一個(gè)狀態(tài)值來(lái)說(shuō)明搜索的狀態(tài),如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。

語(yǔ)法:

grep [options] [pattern] file

命令   參數(shù)     匹配模式 文件數(shù)據(jù)

-i : Linux大小寫(xiě)敏感,忽略字符大小寫(xiě)

-o : 僅顯示匹配的字符串本身

-v : 顯示沒(méi)有被匹配的行

-E :支持使用擴(kuò)展的正則表達(dá)式元字符

-q : 靜默模式,不輸出任何信息

-n : 顯示行號(hào)

-F : 相當(dāng)于fgrep,匹配固定字符串的內(nèi)容。

fgrep : 為固定字符串全局正則表達(dá)式打印fgrep(與grep -F相同)是固定的或快速的grep,其行為與grep相同,但不會(huì)將任何正則表達(dá)式元字符識(shí)別為特殊的。搜索將更快完成,因?yàn)樗惶幚砗?jiǎn)單的字符串而不是復(fù)雜的模式。

實(shí)例:

1. grep '^a' test.txt -i -n    #查找以a開(kāi)頭的行,顯示行號(hào)并且忽略大小寫(xiě)。
        'a$'                   #查找以a結(jié)尾的行
        'a*'                   #查找a出現(xiàn)一次或者多次行號(hào)      

2. grep -v '^$' test.txt       #反向輸出所有非空格內(nèi)容(過(guò)濾空行)

3. grep "\.$" test.txt -n      #輸出以.為結(jié)束的行,\為轉(zhuǎn)義字符,.為特殊字符。
        '^.*c'                 #以任意內(nèi)容開(kāi)頭, 直到c結(jié)束
4. grep "[abc]" test.txt -n -o #匹配abc字符中的任意一個(gè),得到它的行數(shù)和行號(hào),只顯示被匹配的關(guān)鍵字。
        "[^a]"           -c    #匹配除a以外的字符,顯示被匹配了多少行。
        "[a+]"           -n    #+號(hào)表示匹配前一個(gè)字符1一次或多次.
        "[go?d]"         -n    #匹配god或者good
5. grep -E "(ab)+c" test.txt -n   #匹配ab出現(xiàn)一次或者多次以c結(jié)尾的行,并顯示行號(hào)。
         "go(|o|od)d"             #|或的意思,()將一個(gè)或多個(gè)字符捆綁一起, 當(dāng)作一個(gè)整體進(jìn)行處理。
         "(ab){1,3}"              #匹配ab字符一到三次。

sed

 sed 是一種流編輯器,它一次處理一內(nèi)容。

? 處理時(shí),把當(dāng)前處理的行存儲(chǔ)在臨時(shí)緩沖區(qū)中,稱為“模式空間”(patternspace ),

? 接著用sed 命令處理緩沖區(qū)中的內(nèi)容,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕。

? 然后讀入下行,執(zhí)行下一個(gè)循環(huán)。

? 如果沒(méi)有使諸如‘D’ 的特殊命令,那會(huì)在兩個(gè)循環(huán)之間清空模式空間,但不會(huì)清空保留空間。

? 這樣不斷重復(fù),直到文件末尾。

? 文件內(nèi)容并沒(méi)有改變,除非你使用重定向存儲(chǔ)輸出或-i

? 功能:主要用來(lái)自動(dòng)編輯一個(gè)或多個(gè)文件, 簡(jiǎn)化對(duì)文件的反復(fù)操作

?語(yǔ)法: sed` `[options] ``'[地址定界] command'` `file``(s)

?常用的option:

-n :不輸出模式空間內(nèi)容到屏幕,即不自動(dòng)打印,只打印匹配到的行
-e :多點(diǎn)編輯,對(duì)每行處理時(shí),可以有多個(gè)Script
-f :把Script寫(xiě)到文件當(dāng)中,在執(zhí)行sed時(shí)-f 指定文件路徑,如果是多個(gè)Script,換行寫(xiě)
-r :支持?jǐn)U展的正則表達(dá)式
-i :直接將處理的結(jié)果寫(xiě)入文件
-i.bak :在將處理的結(jié)果寫(xiě)入文件之前備份一份

 

地址定界:

不給地址:對(duì)全文進(jìn)行處理
單地址:
   \#: 指定的行
   /pattern/:被此處模式所能夠匹配到的每一行
地址范圍:
   \#,#
   \#,+#
   /pat1/,/pat2/
   \#,/pat1/
~:步進(jìn)
   sed -n '1~2p' 只打印奇數(shù)行 (1~2 從第1行,一次加2行)
   sed -n '2~2p' 只打印偶數(shù)行

command:

d:刪除模式空間匹配的行,并立即啟用下一輪循環(huán)

p:打印當(dāng)前模式空間內(nèi)容,追加到默認(rèn)輸出之后

a:在指定行后面追加文本,支持使用\n實(shí)現(xiàn)多行追加

i:在行前面插入文本,支持使用\n實(shí)現(xiàn)多行追加

c:替換行為單行或多行文本,支持使用\n實(shí)現(xiàn)多行追加

w:保存模式匹配的行至指定文件

r:讀取指定文件的文本至模式空間中匹配到的行后

=:為模式空間中的行打印行號(hào)

!:模式空間中匹配行取反處理

加g表示行內(nèi)全局替換;
  在替換時(shí),可以加一下命令,實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換
  \l:把下個(gè)字符轉(zhuǎn)換成小寫(xiě)。
  \L:把replacement字母轉(zhuǎn)換成小寫(xiě),直到\U或\E出現(xiàn)。
  \u:把下個(gè)字符轉(zhuǎn)換成大寫(xiě)。
  \U:把replacement字母轉(zhuǎn)換成大寫(xiě),直到\L或\E出現(xiàn)。
  \E:停止以\L或\U開(kāi)始的大小寫(xiě)轉(zhuǎn)換

實(shí)例:

1. sed -n '5,19 p' demo           #查看文件demo中5-19行中的內(nèi)容。
2. sed -n '/^a/ p' demo          #查看以a開(kāi)頭的demo文件的行。
3. sed '2,3 d' demo | head        #將2-5行內(nèi)容打印出來(lái)。
4. sed -e '4 a\abc' demo | head  #在文件passwd上的第四行后面添加abc.
5. sed '2 i\abc' demo | head     #在第二行前插入abc.
6. sed '3 c\abc' demo |head      #將第三行替換為abc.
7. sed -n '5,10 s/bin/aaaa/ p' demo |head   #將passwd的5到10的bin字符串查找出來(lái)替換為aaaa。
8. sed -i '1 d' demo             #刪除原文件的第一行。
9. sed -i.bak '1 d' demo         #備份

awk

awk是一種編程語(yǔ)言,用于在linux/unix下對(duì)文本和數(shù)據(jù)進(jìn)行處理。

數(shù)據(jù)可以來(lái)自標(biāo)準(zhǔn)輸入(stdin)、一個(gè)或多個(gè)文件,或其它命令的輸出。

支持用戶自定義函數(shù)和動(dòng)態(tài)正則表達(dá)式等先進(jìn)功能,是linux/unix下的一個(gè)強(qiáng)大編程工具。

awk有很多內(nèi)建的功能,比如數(shù)組、函數(shù)等,這是它和C語(yǔ)言的相同之處,靈活性是awk最大的優(yōu)勢(shì)。

語(yǔ)法:

awk ‘BEGIN {commands} pattern {commands}END{commands}' file1

BEGIN:處理數(shù)據(jù)前執(zhí)行的命令

END:處理數(shù)據(jù)后執(zhí)行的命令

pattern:模式,每一行都執(zhí)行的命令

BEGIN和END里的命令只是執(zhí)行一次

pattern里的命令會(huì)匹配每一行去處理

awk -F: 'BEGIN{print "第一列"}{print $1} END{print "結(jié)束"}' awkdemo
第一列
a
b
c
結(jié)束

示例:

1. awk -F ":" '{print $1,$2,$5}' /etc/passwd | head 


    -F ":"  :  awk選項(xiàng),指定輸入分割符為:

    '{print}'    : 固定語(yǔ)法

    $1,$2,$5  :輸出第一個(gè),第二個(gè),第五個(gè)字段

     : 是輸出分隔符,如果不加默認(rèn)是沒(méi)有分隔符的。

2. echo 'this is a test' | awk '{print $0}'
   this is a test

3. echo 'this is a test' | awk '{print $NF}'
  test                         #$NF表示最后一個(gè)字段,$(NF-1)表示倒數(shù)第二個(gè)字段。

4. cat awkdemo
 a:b
 c:d

 awk -v FS=':' '{print $1,$2}' demo  #FS指定輸入分隔符
 a b
 c d


5. awk -v FS=':' -v OFS='---' '{print $1,$2}' demo  #OFS指定輸出分隔符
 a---b
 c---d

6. awk -v RS=':' '{print $1,$2}' demo
 a
 b c
 d

7. awk -v FS=':' -v ORS='---' '{print $1,$2}' demo
a b---c d


8. awk '{print FILENAME}' demo1
demo1

9. awk 'BEGIN {print ARGC}' demo 
2
10. awk 'BEGIN {print ARGV[0]}' demo1 
awk
    awk 'BEGIN {print ARGV[1]}' demo1
demo1

       

內(nèi)置變量

  • FS :輸入字段分隔符,默認(rèn)為空白字符

  • OFS :輸出字段分隔符,默認(rèn)為空白字符

  • RS :輸入記錄分隔符,指定輸入時(shí)的換行符,原換行符仍有效

  • ORS :輸出記錄分隔符,輸出時(shí)用指定符號(hào)代替換行符

  • NF :字段數(shù)量,共有多少字段, $NF引用最后一列,$(NF-1)引用倒數(shù)第2列

  • NR :行號(hào),后可跟多個(gè)文件,第二個(gè)文件行號(hào)繼續(xù)從第一個(gè)文件最后行號(hào)開(kāi)始

  • FNR :各文件分別計(jì)數(shù), 行號(hào),后跟一個(gè)文件和NR一樣,跟多個(gè)文件,第二個(gè)文件行號(hào)從1開(kāi)始

  • FILENAME :當(dāng)前文件名

  • ARGC :命令行參數(shù)的個(gè)數(shù)

  • ARGV :數(shù)組,保存的是命令行所給定的各參數(shù),查看參數(shù)

自定義變量:-v var=value

awk -v name="mmm" -F: '{print name":"$0}' demo
mmm:a:b
mmm:c:d

內(nèi)置函數(shù),方便對(duì)原始數(shù)據(jù)的處理。

$ awk -F ':' '{ print toupper($1) }' demo.txt

?

  • tolower():字符轉(zhuǎn)為小寫(xiě)。

  • length():返回字符串長(zhǎng)度。

  • substr():返回子字符串。

  • sin():正弦。

  • cos():余弦。

  • sqrt():平方根。

  • rand():隨機(jī)數(shù)。

awk -F ':' '/usr/ {print $1}' demo.txt
#print命令前面是一個(gè)正則表達(dá)式,只輸出包含usr的行。
awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt
#輸出奇數(shù)行
 awk -F ':' 'NR >3 {print $1}' demo.txt
 #輸出第三行后的行
 awk -F ':' '$1 == "root" {print $1}' demo.txt
?
 awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt
 
 #輸出第一個(gè)字段等于指定值的行。
awk -F ':' '{if ($1 > "m") print $1; else print "---"}' demo.txt
#使用if語(yǔ)句

操作符:

1. df -h |awk -F: '$0 ~ /^\/dev/' /dev/mapper/cl-root
#查詢以/dev開(kāi)頭的磁盤(pán)信息
模式匹配符:~ :左邊是否和右邊匹配包含  
          !~ :是否不匹配
2. awk -F: '$3>=0 && $3<=10 {print $1,$3}' /aaa
 
3. awk -F: '$3==0 || $3>=10 {print $1}' /aaa
   
其他操作符

1.算術(shù)操作符:

   x+y, x-y, x*y, x/y, x^y, x%y
   -x:  轉(zhuǎn)換為負(fù)數(shù)
   +x:  轉(zhuǎn)換為數(shù)值

2.賦值操作符:

   =, +=, -=, *=, /=, %=, ^=, ++, --

3.比較操作符:

   ==, !=, >, >=, <, <=


linux三劍客,linux,服務(wù)器,運(yùn)維文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-853073.html

到了這里,關(guān)于linux文本三劍客詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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文本三劍客---grep、sed、awk

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

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

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

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

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

    2023年04月25日
    瀏覽(21)
  • linux文本三劍客---grep,sed,awk

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

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

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

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

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

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

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

    2023年04月18日
    瀏覽(36)
  • Linux 三劍客命令之 awk 詳解

    Linux 三劍客命令之 awk 詳解

    目錄 一、Awk 實(shí)戰(zhàn)講解 1.1 awk 的原理 1.2 BEGIN 和 END 模塊 1.3 運(yùn)算符 1.4 常用 awk 內(nèi)置變量 1.5 awk 正則 1.6 awk 常用字符串函數(shù) ????????awk 是一種很棒的語(yǔ)言,它適合文本處理和報(bào)表生成,其語(yǔ)法較為常見(jiàn),借鑒了某些語(yǔ)言的一些精華,如 C 語(yǔ)言等。在 linux 系統(tǒng)日常處理工作中

    2024年02月03日
    瀏覽(574)
  • Linux三劍客——Linux grep命令詳解:查找文件內(nèi)容

    很多時(shí)候,我們并不需要列出文件的全部?jī)?nèi)容,而是從文件中找到包含指定信息的那些行,要實(shí)現(xiàn)這個(gè)目的,可以使用?grep 命令。 grep 命令 作為 Linux 文本處理三劍客的一員,另外兩個(gè)是 sed 和 awk ,我們會(huì)在后面的文章中作詳細(xì)介紹。 grep 命令 的由來(lái)可以追溯到 UNIX 誕生的

    2024年02月11日
    瀏覽(84)
  • 文本三劍客之 awk

    文本三劍客之 awk

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

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

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

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

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

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

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

    2024年02月05日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包