五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-02-03 00:07 | 文章來源:源碼之家

awk命令

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

awk工作原理

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

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

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

awk的命令格式

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

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

內建變量說明
FS列分割符,制定和每行文本的字段分割符,默認為空格或者制表符
NF當前處理的行的字段個數(shù)
NR當前處理行的行號(序數(shù))
$0當前處理行的整行內容
$n當前處理行的第n個字段(第n列)
FILENAME被處理的文件名
RS行分隔符,awk從文本上讀取資料時,將根據(jù)RS的定義把資料切割成許多條記錄,而awk一次僅讀入一條,以進行處理,預設值是\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為結尾的行
22222
awk 'BEGIN{x=0};/^2/{x++};END {print x}' 11.txt
#統(tǒng)計以2開頭的行的行數(shù)
2

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

awk以字段輸出文本

字段3為用戶賬號的UID

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

awk通過管道符,雙引號調用shell命令

getline

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

例:獲取本機ip,并轉換成二進制

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

#對分段后的IP地址賦值給一個變量
IP=`ifconfig |awk '(NR==2) {print $2}' | awk 'BEGIN {RS="."} ; {print} '`
#進行外層循環(huán),四次
for a in $IP
do
  #進行內循環(huán),選用減法進行循環(huán),如果外層循環(huán)的值比被減數(shù)大,則取余數(shù),并輸出1;反之則輸出0,且不取減法結果。
  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  " "  #進行系統(tǒng)默認的空格換行操作
done> test.txt
  
IP1="`cat test.txt`"
echo $IP1 | sed 's/ /./g'

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

海外服務器租用

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部