日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

awk命令初學時沒有主要思路,不清楚具體功能,很容易沉迷在指令參數的海洋里,而且,awk還支持循環、判斷,相當于學習一門小型編程語言,學習難度比較高。

對于大多數人來說,理解能力都差不多,按照本文案例流程,在自己的linux上敲一遍,和結果對比,檢查是否一致,就很容易理解了。

用手學Linux

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

awk簡介

awk是Linux Shell中一種非常強大的文本處理工具,數據可以來自標準輸入或者管道;

awk不僅僅是一個命令,更是一門編程語言,支持選擇結構、循環結構、以及豐富的邏輯運算符,便于進行復雜的文本處理;


 

awk按照行處理文本,逐行掃描,默認從第一行到最后一行,找到匹配到特定行,并進行相關操作;

awk分別代表其作者姓氏的第一個字母。因為它的作者是三個人,分別是Alfred Aho、Brian Kernighan、Peter Weinberger。

語法格式:

awk 選項 'commands' 文件名常用選項:-F 定義字段分割符號,默認的分隔符是空格-v 定義變量并賦值


 

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

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

$0打印出匹配到行的全部內容

awk內置變量

變量

變量說明

$0

當前處理行的所有記錄

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

文件中每行以間隔符號分割的不同字段

NF

當前記錄的字段數(列數)

$NF

最后一列

NR

行號

FS

定義間隔符

OFS

定義輸出字段分隔符,默認空格

RS

輸入記錄分割符,默認換行

ORS

輸出記錄分割符,默認換行

FILENAME

當前輸入的文件名


 

打印列數、最后一列、第1列、第2列、倒數第二列。


 

打印第1行到第5行。


 

用分號;分隔開兩部分匹配規則,可以理解為或的關系,前面是匹配1-5行,后面是匹配以root開頭的行,是前3行。一共輸出8行。

格式化輸入printf


 

%s字符串類型占位符,默認右對齊,前面加負號-左對齊。

awk中BEGIN...END使用

BEGIN:表示在程序開始前執行

END:表示所有文件處理完后執行

用法:'BEGIN{開始處理之前};{處理中};END{處理結束后}'


 

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


 

BEGIN{FS=":"}相當于使用選項-F:


 

OFS輸出間隔為兩個制表符t。


 

輸入內容以@分隔。


 

輸出內容指定以"++++"分隔。

awk工作原理

  1. awk使用一行作為輸入,并將這一行賦給內部變量$0,每一行也可稱為一個記錄,以換行符(RS)結束
  2. 每行被間隔符(默認為空格或制表符)分解成字段,每個字段存儲在已編號的變量中,從$1開始
  3. 問:awk如何知道用空格來分隔字段的呢?
  4. 答:因為有一個內部變量FS來確定字段分隔符。初始時,FS賦為空格。
  5. awk使用print函數打印字段,打印出來的字段會以空格分隔,比如1,1,3之間有一個逗號,但是逗號比較特殊,它映射為另一個內部變量,稱為輸出字段分隔符OFS,OFS默認為空格。
  6. awk處理完一行后,將從文件中獲取另一行,并將其存儲在$0中,覆蓋原來的內容,然后將新的字符串分隔成字段并進行處理,該過程將持續到所有行處理完畢。
awk變量定義

 


 

調用awk中變量不需要加$。

邏輯運算符


 

使用或||運算符打印第1行和第4行。


 

匹配1-4行或者以hioiei開頭的行。

流程控制

awk的流程控制和一般編程語言中的邏輯一樣,包括選擇結構和循環結構,用于處理復雜的命令邏輯。

if條件判斷單分支結構:{if(表達式){語句1;語句2;...}}


 

雙分支結構:{if(表達式){語句;語句;...}else{語句;語句;...}}


 

多分支結構:{ if(表達式1){語句;語句;...}else if(表達式2){語句;語句;...}else if(表達式3){語句;語句;...}else{語句;語句;...}}


 

循環結構


 

while循環打印1-10


 

for循環打印1-10并求和,結果55。


 

break跳出整個循環,continue跳出本次循環,繼續進入下一次循環,由于本次結束后,i并沒有加1,因此程序一直卡住。

思考,如何調整循環體的順序?使得跳出本次循環后,進入下一次循環。

算術運算


 

awk按照浮點數進行數學運算。

腳本運行


 

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

運行:

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

 

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

 

分享到:
標簽:Linux Shell
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定