亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

awk命令初學(xué)時(shí)沒(méi)有主要思路,不清楚具體功能,很容易沉迷在指令參數(shù)的海洋里,而且,awk還支持循環(huán)、判斷,相當(dāng)于學(xué)習(xí)一門小型編程語(yǔ)言,學(xué)習(xí)難度比較高。

對(duì)于大多數(shù)人來(lái)說(shuō),理解能力都差不多,按照本文案例流程,在自己的linux上敲一遍,和結(jié)果對(duì)比,檢查是否一致,就很容易理解了。

用手學(xué)Linux

不求面面俱到,只求初步掌握,熟練后再搭配其他指令靈活運(yùn)用。

awk簡(jiǎn)介

awk是Linux Shell中一種非常強(qiáng)大的文本處理工具,數(shù)據(jù)可以來(lái)自標(biāo)準(zhǔn)輸入或者管道

awk不僅僅是一個(gè)命令,更是一門編程語(yǔ)言,支持選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、以及豐富的邏輯運(yùn)算符,便于進(jìn)行復(fù)雜的文本處理;


 

awk按照行處理文本,逐行掃描,默認(rèn)從第一行到最后一行,找到匹配到特定行,并進(jìn)行相關(guān)操作;

awk分別代表其作者姓氏的第一個(gè)字母。因?yàn)樗淖髡呤侨齻€(gè)人,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。

語(yǔ)法格式:

awk 選項(xiàng) 'commands' 文件名常用選項(xiàng):-F 定義字段分割符號(hào),默認(rèn)的分隔符是空格-v 定義變量并賦值


 

-F: 是以:將源文件分隔

/root/匹配源文件中包括root的行,打印出文件名,如果不進(jìn)行匹配,則源文件有多少行就打印出多少行文件名

$0打印出匹配到行的全部?jī)?nèi)容

awk內(nèi)置變量

變量

變量說(shuō)明

$0

當(dāng)前處理行的所有記錄

1,1,2,3...3...n

文件中每行以間隔符號(hào)分割的不同字段

NF

當(dāng)前記錄的字段數(shù)(列數(shù))

$NF

最后一列

NR

行號(hào)

FS

定義間隔符

OFS

定義輸出字段分隔符,默認(rèn)空格

RS

輸入記錄分割符,默認(rèn)換行

ORS

輸出記錄分割符,默認(rèn)換行

FILENAME

當(dāng)前輸入的文件名


 

打印列數(shù)、最后一列、第1列、第2列、倒數(shù)第二列。


 

打印第1行到第5行。


 

用分號(hào);分隔開(kāi)兩部分匹配規(guī)則,可以理解為或的關(guān)系,前面是匹配1-5行,后面是匹配以root開(kāi)頭的行,是前3行。一共輸出8行。

格式化輸入printf


 

%s字符串類型占位符,默認(rèn)右對(duì)齊,前面加負(fù)號(hào)-左對(duì)齊。

awk中BEGIN...END使用

BEGIN:表示在程序開(kāi)始前執(zhí)行

END:表示所有文件處理完后執(zhí)行

用法:'BEGIN{開(kāi)始處理之前};{處理中};END{處理結(jié)束后}'


 

awk -F: 'BEGIN{print "NAMEtDIRtSHELLn***************************************"}{printf "%-10s %-10s %-10sn",$1,$(NF-1),$NF}END{print "****************************************"}' input.txt間隔符


 

BEGIN{FS=":"}相當(dāng)于使用選項(xiàng)-F:


 

OFS輸出間隔為兩個(gè)制表符t。


 

輸入內(nèi)容以@分隔。


 

輸出內(nèi)容指定以"++++"分隔。

awk工作原理

  1. awk使用一行作為輸入,并將這一行賦給內(nèi)部變量$0,每一行也可稱為一個(gè)記錄,以換行符(RS)結(jié)束
  2. 每行被間隔符(默認(rèn)為空格或制表符)分解成字段,每個(gè)字段存儲(chǔ)在已編號(hào)的變量中,從$1開(kāi)始
  3. 問(wèn):awk如何知道用空格來(lái)分隔字段的呢?
  4. 答:因?yàn)橛幸粋€(gè)內(nèi)部變量FS來(lái)確定字段分隔符。初始時(shí),F(xiàn)S賦為空格。
  5. awk使用print函數(shù)打印字段,打印出來(lái)的字段會(huì)以空格分隔,比如1,1,3之間有一個(gè)逗號(hào),但是逗號(hào)比較特殊,它映射為另一個(gè)內(nèi)部變量,稱為輸出字段分隔符OFS,OFS默認(rèn)為空格。
  6. awk處理完一行后,將從文件中獲取另一行,并將其存儲(chǔ)在$0中,覆蓋原來(lái)的內(nèi)容,然后將新的字符串分隔成字段并進(jìn)行處理,該過(guò)程將持續(xù)到所有行處理完畢。
awk變量定義

 


 

調(diào)用awk中變量不需要加$。

邏輯運(yùn)算符


 

使用或||運(yùn)算符打印第1行和第4行。


 

匹配1-4行或者以hioiei開(kāi)頭的行。

流程控制

awk的流程控制和一般編程語(yǔ)言中的邏輯一樣,包括選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),用于處理復(fù)雜的命令邏輯。

if條件判斷單分支結(jié)構(gòu):{if(表達(dá)式){語(yǔ)句1;語(yǔ)句2;...}}


 

雙分支結(jié)構(gòu):{if(表達(dá)式){語(yǔ)句;語(yǔ)句;...}else{語(yǔ)句;語(yǔ)句;...}}


 

多分支結(jié)構(gòu):{ if(表達(dá)式1){語(yǔ)句;語(yǔ)句;...}else if(表達(dá)式2){語(yǔ)句;語(yǔ)句;...}else if(表達(dá)式3){語(yǔ)句;語(yǔ)句;...}else{語(yǔ)句;語(yǔ)句;...}}


 

循環(huán)結(jié)構(gòu)


 

while循環(huán)打印1-10


 

for循環(huán)打印1-10并求和,結(jié)果55。


 

break跳出整個(gè)循環(huán),continue跳出本次循環(huán),繼續(xù)進(jìn)入下一次循環(huán),由于本次結(jié)束后,i并沒(méi)有加1,因此程序一直卡住。

思考,如何調(diào)整循環(huán)體的順序?使得跳出本次循環(huán)后,進(jìn)入下一次循環(huán)。

算術(shù)運(yùn)算


 

awk按照浮點(diǎn)數(shù)進(jìn)行數(shù)學(xué)運(yùn)算。

腳本運(yùn)行


 

#!/usr/bin/awk -fBEGIN{FS=":"}NR=1,NR=3{print $1"t"$NF}

運(yùn)行:

1.awk -f awk.sh input.txt2.awk -f awk.sh input.txt

 

  • 什么是Linux系統(tǒng)?我們是否要用Linux
  • 學(xué)習(xí)Linux命令行,用手就行!
  • Linux神之編輯器VIM,史上最強(qiáng)編輯器!
  • Linux系統(tǒng)虛擬機(jī)和云服務(wù)配置,快速搭建學(xué)習(xí)環(huán)境
  • Linux系統(tǒng)虛擬機(jī)和云服務(wù)配置,快速搭建學(xué)習(xí)環(huán)境
  • Linux tmux終端復(fù)用器,遠(yuǎn)程指令再也不會(huì)中斷了!
  • 遠(yuǎn)程登錄Linux服務(wù)器,SSH加密傳輸協(xié)議,一種更安全的協(xié)議
  • Linux如何新建用戶,支持多用戶共同使用的操作系統(tǒng)
  • 什么是C++編程,經(jīng)久不衰的老牌編程語(yǔ)言
  • 什么是C++變量,就是存儲(chǔ)數(shù)據(jù)的盒子

 

分享到:
標(biāo)簽:Linux Shell
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定