轉:shell awk

簡單使用:

awk :對于文件中一行行的獨處來執行操作 。

awk -F :'{print $1,$4}' :使用‘:’來分割這一行,把這一行的第一第四個域打印出來 。

?

?

詳細介紹:

AWK命令介紹

?

awk語言的最基本功能是在文件或字符串中基于指定規則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作,完整的awk腳本通常用來格式化文本文件中的信息

?

1. 調用awk:

?

第一種命令行方式,:

?

awk[-Field-separator]'commands'input-file(s)

?

這里commands是真正的awk命令,[-F域分隔符]是可選的,awk默認使用空格分隔,因此如果要瀏覽域間有空格的文本,不必指定這個選項,但如果瀏覽如passwd文件,此文件各域使用冒號作為分隔符,則必須使用-F選項: awk -F : 'commands' input-file

?

第二種,將所有awk命令插入一個文件,并使awk程序可執行,然后用awk命令解釋器作為腳本的首行,以便通過鍵入腳本名稱來調用它

?

第三種,將所有awk命令插入一個單獨文件,然后調用,如:

?

awk-fawk-script-fileinput-file

?

-f選項指明在文件awk-script-file的awk腳本,input-file是使用awk進行瀏覽的文件名

?

2. awk腳本:

?

awk腳本由各種操作和模式組成,根據分隔符(-F選項),默認為空格,讀取的內容依次放置到對應的域中,一行一行記錄讀取,直到文件尾

?

2.1. 模式和動作

?

任何awk語句都是由模式和動作組成,在一個awk腳本中可能有許多語句。模式部分決定動作語句何時觸發及觸發事件。動作即對數據進行的操作,如果省去模式部分,動作將時刻保持執行狀態

?

模式可以是任何條件語句或復合語句或正則表達式,模式包含兩個特殊字段BEGIN和END,使用BEGIN語句設置計數和打印頭,BEGIN語句使用在任何文本瀏覽動作之前,之后文本瀏覽動作依據輸入文件開始執行;END語句用來在awk完成文本瀏覽動作后打印輸出文本總數和結尾狀態標志,有動作必須使用{}括起來

?

實際動作在大括號{}內指明,常用來做打印動作,但是還有更長的代碼如if和循環looping語句及循環退出等,如果不指明采取什么動作,awk默認打印出所有瀏覽出的記錄

?

2.2. 域和記錄:

?

awk執行時,其瀏覽標記為$1,$2...$n,這種方法稱為域標記。使用$1,$3表示參照第1和第3域,注意這里使用逗號分隔域,使用$0表示使用所有域。例如:

?

awk '{print $0}' temp.txt > sav.txt

?

表示打印所有域并把結果重定向到sav.txt中

?

awk '{print $0}' temp.txt|tee sav.txt

?

和上例相似,不同的是將在屏幕上顯示出來

?

awk '{print $1,$4}' temp.txt

?

只打印出第1和第4域

?

awk 'BEGIN {print "NAME GRADE\n----"} {print $1"\t"$4}' temp.txt

?

表示打信息頭,即輸入的內容的第一行前加上"NAME GRADE\n-------------",同時內容以tab分開

?

awk 'BEGIN {print "being"} {print $1} END {print "end"}' temp

?

同時打印信息頭和信息尾

?

2.3. 條件操作符:

?

<、<=、==、!=、>=、~匹配正則表達式、!~不匹配正則表達式

?

匹配:awk '{if ($4~/ASIMA/) print $0}' temp 表示如果第四個域包含ASIMA,就打印整條

?

精確匹配:awk '$3=="48" {print $0}' temp 只打印第3域等于"48"的記錄

?

不匹配: awk '$0 !~ /ASIMA/' temp 打印整條不包含ASIMA的記錄

?

不等于: awk '$1 != "asima"' temp

?

小于: awk '{if ($1<$2) print $1 "is smaller"}' temp

?

設置大小寫: awk '/[Gg]reen/' temp打印整條包含Green,或者green的記錄

?

任意字符: awk '$1 ~/^...a/' temp打印第1域中第四個字符是a的記錄,符號’^’代表行首,符合’.’代表任意字符

?

或關系匹配: awk '$0~/(abc)|(efg)/' temp 使用|時,語句需要括起來

?

AND與關系: awk '{if ( $1=="a" && $2=="b" ) print $0}' temp

?

OR或關系: awk '{if ($1=="a" || $1=="b") print $0}' temp

?

2.4. awk內置變量:

?

ARGC

命令行參數個數

NF

瀏覽記錄的域個數

AGRV

命令行參數排列

NR

已讀的記錄數

ENVIRON

支持隊列中系統環境變量的使用

OFS

輸出域分隔符

FILENAME

awk瀏覽的文件名

ORS

輸出記錄分隔符

FNR

瀏覽文件的記錄數

RS

控制記錄分隔符

FS

設置輸入域分隔符,同- F選項

NF

瀏覽記錄的域個數

?

例:awk'END{print NR}' temp在最后打印已讀記錄條數

?

awk '{print NF,NR,$0} END {print FILENAME}' temp

?

awk '{if (NR>0 && $4~/Brown/) print $0}' temp 至少存在一條記錄且包含Brown

?

NF的另一用法: echo $PWD | awk -F/ '{print $NF}' 顯示當前目錄名

轉載于:https://www.cnblogs.com/yangchunli/p/7132787.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281411.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281411.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281411.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac使用crontab來實現定時任務

crontab 定時執行 配置文件都在/etc/crontab下&#xff0c;如果沒有就創建 語法&#xff1a; crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 說明&#xff1a; crontab 是用來讓使用者在固定時間或固定間隔執行程序之用&#xff0c;換句話說&#…

前端技術周刊 2018-12-03:DOM

前端快爆 Chrome 71 開始將試用 SXG 功能&#xff0c;它是由 IETF 提出&#xff0c;Web Package 協議規范下的 Signed HTTP Exchanges 功能的縮寫。該技術使得一個第三方服務器可以直接向用戶提供可靠資源&#xff0c;且不用與原站共享 HTTPS 證書密鑰。?點評&#xff1a;一項…

公司新來了一位阿里P9,在全員大會上講葷段子!還是上個世紀的老段子,太爛了!...

阿里P9在坊間的名聲一向不好&#xff0c;這幾年在業界出了不少令人無語的新聞&#xff0c;今天又來了一個&#xff1a;公司新來了一位阿里P9偽高管&#xff0c;全員大會上來先講了一個葷段子&#xff0c;這個破段子還是上個世紀的&#xff0c;太爛了&#xff01;關于這個段子&a…

【轉】博客美化(1)基本后臺設置與樣式設置

閱讀目錄 1.博客園后臺設置2.自定義樣式的設置博客園美化相關文章目錄&#xff1a;博客園博客美化相關文章目錄 一直都拜膜那些博客園的皮膚設計高手&#xff0c;由于本人對前端研究甚少&#xff0c;所以js,css這種東西只能看得懂最基本的&#xff0c;會簡單改改。然后一直對自…

Airdoc創始人:工智能可以在醫療領域多個環節發揮作用 但有局限性

7月1日&#xff0c;在由武漢國家生物產業基地建設管理辦公室主辦、火石創造承辦、光谷健康智慧園協辦的醫療大數據與醫學人工智能高峰論壇上&#xff0c;Airdoc創始人兼董事長張大磊做了題為《AI在醫療領域中應用的問題與局限》的演講。 Airdoc是醫療領域人工智能領軍企業&…

我的世界服務器抽獎系統怎么弄,我的世界自動識別貨幣抽獎機如何制作

我的世界是一款很經典的沙盒類游戲&#xff0c;在游戲中紅石和命令方塊是這部作品的核心&#xff0c;可以制作很多裝備和道具&#xff0c;下面給大家分享下我的世界自動識別貨幣抽獎機如何制作&#xff0c;希望對大家有所幫助。自動識別貨幣抽獎機制作方法廢話不多說,(貌似一句…

Java并發編程中volatile實現過程詳細解析

2019獨角獸企業重金招聘Python工程師標準>>> 首先并發編程有三大特性&#xff1a; 可見性&#xff0c;有序性&#xff0c;原子性。volatile關鍵字實現了前面兩個特性。那么它是如何實現這兩個特性的呢&#xff1f; 首先是可見性。可見性主要是讓緩存&#xff0c;直接…

《ASP.NET Core 6框架揭秘》實例演示[32]:錯誤頁面的N種呈現方式

由于ASP.NET是一個同時處理多個請求的Web應用框架&#xff0c;所以在處理某個請求過程中出現異常并不會導致整個應用的中止。出于安全方面的考量&#xff0c;為了避免敏感信息外泄&#xff0c;客戶端在默認情況下并不會得到詳細的出錯信息&#xff0c;這無疑會在開發過程中增加…

SpringMVC接受JSON參數詳解及常見錯誤總結我改

SpringMVC接受JSON參數詳解及常見錯誤總結 最近一段時間不想使用Session了&#xff0c;想感受一下Token這樣比較安全&#xff0c;穩健的方式&#xff0c;順便寫一個統一的接口給瀏覽器還有APP。所以把一個練手項目的前臺全部改成Ajax了&#xff0c;跳轉再使用SpringMVC控制轉發…

軟件定義存儲的定制化怎么走?

引言 當前&#xff0c;軟件定義存儲成為業內超高速增長的典型。有研究人員稱&#xff0c;從2014年到2019年&#xff0c;軟件定義存儲市場將從14億美元增長到62億美元以上&#xff0c;年復合增長率將達35%。軟件定義存儲所帶來的優勢顯而易見&#xff0c;但是對于企業來說&#…

Golang并發模型:合理退出并發協程

goroutine作為Golang并發的核心&#xff0c;我們不僅要關注它們的創建和管理&#xff0c;當然還要關注如何合理的退出這些協程&#xff0c;不&#xff08;合理&#xff09;退出不然可能會造成阻塞、panic、程序行為異常、數據結果不正確等問題。這篇文章介紹&#xff0c;如何合…

劍網服務器維護,12月31日服務器例行維護公告

隱元秘鑒新增以下江湖行里使用趣味道具的成就&#xff1a;壓酒喚客嘗&#xff1a;使用壓酒三十次欲解紅燭意&#xff1a;使用燭影三十次閑情吹笛子&#xff1a;使用吹斷三十次引弦中落雀&#xff1a;使用千鳥三十次黃云動風色&#xff1a;使用風色三十次卷抒平生意&#xff1a;…

一款 Windows 軟件快捷助手

WPF 開發的 Windows 軟件快捷助手Windows 軟件快捷助手作者&#xff1a;WPFDevelopersOrg - 驚鏵原文鏈接&#xff1a;https://github.com/WPFDevelopersOrg/SoftwareHelper框架使用.NET40&#xff1b;Visual Studio 2019;項目使用 MIT 開源許可協議&#xff1b;項目使用 MVV…

關于8位AD_DA轉換芯片的采樣率問題

關于使用Keil計算程序執行時間 打開Keil程序&#xff0c;進入“啟動/停止調試”界面。在需要暫停的地方設置斷點&#xff08;在該句程序前雙擊&#xff09;。在程序上方有一行工具欄&#xff1a;此工具欄分別代表復位、運行、停止、步進、步越、步出、運行到光標處等。 點擊運…

CYQ.Data 數據框架 V4.0 開源版本發布(源碼提供下載,秋色園V2.5版本標配框架)

說明的說明&#xff1a; 博客園團隊兩次移此文出首頁&#xff0c;說 這篇文章不屬于知識分享型文章&#xff0c;并且有廣告嫌疑。 本文的確屬于分享型文章&#xff0c;而且分享的知識點比其它文章都多很多&#xff0c;看看網友回復“謝謝分享”就知道是分享型文章了。 所謂廣告…

oracle 分組后取每組第一條數據

數據格式 分組取第一條的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, test1.* FROM test1) WHERE rn 1 ;

永大服務器進去顯示字母,永大電梯服務器使用說明

永大電梯服務器使用說明2021-05-25一&#xff0e; 目的&#xff1a;用于工務交車前對MPU和XDR板進行調試。二&#xff0e; 對應作業&#xff1a;1-1對MPU電梯調試接線連接&#xff1a;1).對MPUGB2(A2)版電梯調試時(以及A2前版本)&#xff0c;接線情況如下&#xff1a;連接順序連…

樹莓派Zero 2 W(ubuntu-22.04)通過.NET6和libusb操作USB讀寫

有這個想法的初衷喜歡電子和DIY硬件的朋友對稚暉君應該都不陌生&#xff0c;他定期都會分享一些自己做的好玩的硬件&#xff0c;他之前做了一個ElectronBot桌面機器人我就很感興趣&#xff0c;所以就自己也做了一個。起初我只是自己開發了一個叫電子腦殼的上位機軟件&#xff0…

bzoj4589

fwt 原理并不知道 nim游戲石子異或和0后手贏 那么也就是求a[1]^a[2]^...^a[n]0的方案數 這個和bzoj3992一樣可以dp dp[i][j]表示前i個數異或和為j的方案數 dp[0][0] 1 dp[i][j] dp[i - 1][k] * a[p] p ^ k j a[p] 0 / 1 表示有沒有p這個數 這個東西也不能矩陣快速冪 但是我…

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 85

UnicodeDecodeError: ascii codec cant decode byte 0xe5 in position 85;import sys reload(sys) sys.setdefaultencoding(utf8)