欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell中的流編輯器awk工作原理

 更新時間:2022年01月04日 11:40:28   作者:即使不為人所道  
awk是一種處理文本文件的語言,是一個強(qiáng)大的文本分析工具, 用于在linux/unix下對文本和數(shù)據(jù)進(jìn)行處理 。這篇文章主要介紹了shell中的流編輯器awk命令及工作原理,需要的朋友可以參考下

awk命令

  • awk是一種處理文本文件的語言,是一個強(qiáng)大的文本分析工具, 用于在linux/unix下對文本和數(shù)據(jù)進(jìn)行處理 。
  • 而且它支持用戶自定義函數(shù)和動態(tài)正則表達(dá)式等先進(jìn)功能,是linux/unix下的一個強(qiáng)大編程工具

awk工作原理

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

sed命令常用于一整行的處理,而awk比較傾向于將一行分成多個"字段"然后再進(jìn)行處理。

awk信息的讀入也是逐行讀取的,執(zhí)行結(jié)果可以通過print的功能將字段數(shù)據(jù)打印顯示。在使用awk命令的過程中,可以使用邏輯操作符 "&&“表示"與”、 “II"表示"或”、 "!“表示"非”; 還可以進(jìn)行簡單的數(shù)學(xué)運(yùn)算,如 +、一、*、/、%、^ 分別表示加、減、乘、除、取余和乘方。

awk的命令格式

awk 選項 "模式或條件 [操作]"  文件1 文件2
awk -f 腳本文件 文件1 文件2

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

內(nèi)建變量說明
FS列分割符,制定和每行文本的字段分割符,默認(rèn)為空格或者制表符
NF當(dāng)前處理的行的字段個數(shù)
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按行輸出文本

在這里插入圖片描述

在這里插入圖片描述

awk '(NR>=1)&&(NR<=4){print}' 11.txt#輸出第一到第四行
111111
22222
233333
444444
awk '(NR==1)||(NR==4){print}' 11.txt#輸出第一和第四行
111111
444444
awk 'NR==1,NR==2{print}' 11.txt#輸出第一和第二行
111111
22222
awk '(NR%2)==1{print}' 11.txt#輸出奇數(shù)行
111111
233333
55555
awk '(NR%2)==0{print}' 11.txt#輸出偶數(shù)行
22222
444444
66666
awk '/^1/{print}' 11.txt#輸出以1為開頭的行
111111
awk '/2$/{print}' 11.txt#輸出以2為結(jié)尾的行
22222
awk 'BEGIN{x=0};/^2/{x++};END {print x}' 11.txt
#統(tǒng)計以2開頭的行的行數(shù)
2

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

awk以字段輸出文本

在這里插入圖片描述

 

在這里插入圖片描述

在這里插入圖片描述

字段3為用戶賬號的UID

字段4為所屬基本組賬號的GID

在這里插入圖片描述

awk通過管道符,雙引號調(diào)用shell命令

在這里插入圖片描述

在這里插入圖片描述

getline

  • 當(dāng)getline左右無重定向符“<”或“|”時,getline作用于當(dāng)前文件,讀入當(dāng)前文件的第一行給其后跟的變量var或$0;應(yīng)該注意到,由于awk在處理getline之前已經(jīng)讀入了一行,所以getline得到的返回結(jié)果是隔行的。
  • 當(dāng)getline左右有重定向符“<”或“|”時,getline則作用于定向輸入文件,由于該文件是剛打開,并沒有被awk讀入一行,只是getline讀入,那么getline返回的是該文件的第一行,而不是隔行。

在這里插入圖片描述

例:獲取本機(jī)ip,并轉(zhuǎn)換成二進(jìn)制

#!/bin/bash
#獲取IP
ifconfig | awk '(NR==2) {print $2}'



#對分段后的IP地址賦值給一個變量
IP=`ifconfig |awk '(NR==2) {print $2}' | awk 'BEGIN {RS="."} ; {print} '`

#進(jìn)行外層循環(huán),四次
for a in $IP
do
     #進(jìn)行內(nèi)循環(huán),選用減法進(jìn)行循環(huán),如果外層循環(huán)的值比被減數(shù)大,則取余數(shù),并輸出1;反之則輸出0,且不取減法結(jié)果。   
     for ((i=1;i<=255;i+=$i))
     do
       m=$[128/$i]
       sum=$[$a-$m]
          if [ $a -ge $m ]
          then
          a=$[$a-$m]
          echo -n "1"  #不換行輸出
          else
          echo -n "0"  #不換行輸出
          fi
     done

echo  " "  #進(jìn)行系統(tǒng)默認(rèn)的空格換行操作
done   > test.txt
     

IP1="`cat test.txt`"
echo $IP1 | sed 's/ /./g'


到此這篇關(guān)于shell中的流編輯器awk的文章就介紹到這了,更多相關(guān)shell編輯器awk內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Shell實(shí)現(xiàn)程序造死循環(huán)的幾種方法示例

    Shell實(shí)現(xiàn)程序造死循環(huán)的幾種方法示例

    在linux下編程的程序猿都知道shell腳本,就算你不怎么熟悉,也應(yīng)該聽過的吧!那在shell腳本中的死循環(huán)該怎么寫呢?下面這篇文章就來給大家介紹了關(guān)于Shell如何實(shí)現(xiàn)讓程序造死循環(huán)的幾種方法,需要的朋友可以參考下。
    2017-08-08
  • shell腳本for循環(huán)實(shí)現(xiàn)文件和目錄遍歷

    shell腳本for循環(huán)實(shí)現(xiàn)文件和目錄遍歷

    本文主要介紹了shell腳本for循環(huán)實(shí)現(xiàn)文件和目錄遍歷,首先進(jìn)行一個要遍歷的文件夾,然后循環(huán)查看每個文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 十三個寫好shell腳本的技巧分享

    十三個寫好shell腳本的技巧分享

    這篇文章主要給大家介紹了關(guān)于寫好shell腳本的13個技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • php編譯安裝常見錯誤大全和解決方法

    php編譯安裝常見錯誤大全和解決方法

    這篇文章主要介紹了php編譯安裝常見錯誤大全和解決方法,需要的朋友可以參考下
    2014-04-04
  • 對shell中常見參數(shù)及判斷命令介紹

    對shell中常見參數(shù)及判斷命令介紹

    今天小編就為大家分享一篇對shell中常見參數(shù)及判斷命令介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Shell逐行讀取文件的4種方法

    Shell逐行讀取文件的4種方法

    這篇文章主要介紹了Shell逐行讀取文件的4種方法,本文介紹了while循環(huán)法、重定向法、管道法、文件描述符法等一些方法,需要的朋友可以參考下
    2014-12-12
  • shell腳本引用外部變量的兩種方法

    shell腳本引用外部變量的兩種方法

    本文主要介紹了shell腳本引用外部變量的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Shell腳本IF條件判斷和判斷條件總結(jié)

    Shell腳本IF條件判斷和判斷條件總結(jié)

    這篇文章主要介紹了Shell腳本IF條件判斷和判斷條件總結(jié),本文先是給出了IF條件判斷的語法,然后給出了常用的判斷條件總結(jié),需要的朋友可以參考下
    2014-10-10
  • shell流程控制語句腳本編程解析

    shell流程控制語句腳本編程解析

    這篇文章主要為大家介紹了shell流程控制語句腳本編程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 監(jiān)視磁盤使用情況的Shell腳本(本地+遠(yuǎn)程)

    監(jiān)視磁盤使用情況的Shell腳本(本地+遠(yuǎn)程)

    任何一個分區(qū)使用到90%就發(fā)送一個郵件給指定的收件人,到95%就在郵件主題出警告(warning),說明發(fā)送郵件程序EMAIL
    2013-01-01

最新評論