linux下的awk程序在哪里编写,如何编写awk命令和脚本
awk命令是處理或分析文本文件(尤其是按行和列組織的數(shù)據(jù)文件)的強(qiáng)大方法.
您可以從命令行運(yùn)行簡(jiǎn)單的awk命令. 應(yīng)該將更復(fù)雜的任務(wù)作為awk程序(所謂的awk腳本)寫(xiě)入文件.
awk命令的基本格式如下:
awk'pattern {action}'輸入文件>輸出文件
這意味著: 占用輸入文件的每一行;如果該行包含模式,則對(duì)該行應(yīng)用操作,然后將結(jié)果行寫(xiě)入輸出文件. 如果省略此模式,則該操作將應(yīng)用于所有行. 例如:
linuxidc @ Ubuntu: ?/ linuxidc.com $ awk'{打印$ 5}'linuxidc.txt> linuxmi.txt
此語(yǔ)句獲取每行第五列中的元素,并將它們作為一行寫(xiě)入輸出文件“ output.txt”. 變量“ $ 4”指的是第四列. 同樣,您可以使用$ 1,$ 2,$ 3等訪問(wèn)第一,第二和第三列. 默認(rèn)情況下,假定列由空格或制表符(所謂的空格)分隔. 因此,如果輸入文件“ linuxidc.txt”包含以下行:
1,linuxidc com,Title 599,價(jià)格$ 9.30
2,ninhao linuxidc,標(biāo)題761,價(jià)格為5.90美元
3,naike xie,第880名,價(jià)格9.10美元
4,Lady Gaga,標(biāo)題198,價(jià)格1.30美元
5,約翰尼·卡什(Johnny Cash),標(biāo)題582,價(jià)格$ 6.50
6,Elvis Presley,Title 370,價(jià)格$ 9.30
7,約翰·列儂(John Lennon),標(biāo)題571,價(jià)格$ 8.90
8,邁克爾·杰克遜(Michael Jackson),標(biāo)題673,價(jià)格7.50美元
9,linuxidc com,Title 585,價(jià)格$ 1.80
然后,該命令將以下行寫(xiě)入輸出文件“ linuxmi.txt”:
linuxidc @ ubuntu: ?/ linuxidc.com $ cat linuxmi.txt
599,
761,
880,
198,
582,
370,
571,
673,
585,
如果列分隔符不是空格或制表符(例如逗號(hào)),則可以在awk語(yǔ)句中如下指定:
linuxidc @ ubuntu: ?/ linuxidc.com $ awk -Fawk腳本,'{print $ 3}'linuxidc.txt> linuxmi.txt
如果認(rèn)為各列之間用逗號(hào)分隔,則將從每行的第三列中選擇元素. 因此,在這種情況下,輸出將是:
linuxidc @ ubuntu: ?/ linuxidc.com $ cat linuxmi.txt
599標(biāo)題
761標(biāo)題
標(biāo)題880
標(biāo)題198
標(biāo)題582
標(biāo)題370
標(biāo)題571
標(biāo)題673
標(biāo)題585
括號(hào)內(nèi)的語(yǔ)句列表('{','}')稱為塊. 如果將條件表達(dá)式放在塊的前面,則僅在條件為真時(shí)才執(zhí)行塊中的語(yǔ)句.
awk'$ 7 ==“ \ $ 7.30” {print $ 3}'linuxidc.txt
在這種情況下,條件是$ 7 ==“ \ $ 7.30”,這意味著列7中的元素等于$ 7.30. 美元符號(hào)前的反斜杠用于防止系統(tǒng)將$ 7解釋為變量,而是從字面上理解美元符號(hào).
因此,此awk語(yǔ)句在每行的第3列中打印出元素,在第7列中打印出“ $ 7.30”.
您還可以使用正則表達(dá)式作為條件. 例如:
linuxidc @ ubuntu: ?/ linuxidc.com $ awk'$ 7 ==“ \ $ 7.30” {print $ 3}'linuxidc.txt
兩個(gè)斜杠('/')之間的字符串是一個(gè)正則表達(dá)式. 在這種情況下,它只是字符串“ 30”. 這意味著,如果一行包含字符串“ 30”,則系統(tǒng)將在該行的第三列中打印該元素. 上例中的輸出為:
linuxidc @ ubuntu: ?/ linuxidc.com $ awk'/ 30 / {print $ 3}'linuxidc.txt
com
Gagaawk腳本,
普雷斯利,
如果表元素是數(shù)字,則awk可以對(duì)它們運(yùn)行計(jì)算,如以下示例所示:
linuxidc @ ubuntu: ?/ linuxidc.com $ awk'{print($ 2 * $ 3)+ $ 7}'linuxidc.com.txt
除了訪問(wèn)當(dāng)前行元素的變量($ 1,$ 2等)之外,整行(行)還具有變量$ 0,而字段數(shù)則具有變量NF.
您還可以在此示例中定義新變量:
linuxidc @ ubuntu: ?/ linuxidc.com $ awk'{sum = 0;為(col = 1; col
這將計(jì)算并打印每行中所有元素的總和.
awk語(yǔ)句通常與sed命令結(jié)合使用.
有關(guān)Linux命令的更多信息,請(qǐng)參考Linux Command Collection的特殊頁(yè)面
Linux公社的RSS地址:
本文將永久更新鏈接地址:
本文來(lái)自電腦雜談,轉(zhuǎn)載請(qǐng)注明本文網(wǎng)址:
http://www.pc-fly.com/a/jisuanjixue/article-287526-1.html
總結(jié)
以上是生活随笔為你收集整理的linux下的awk程序在哪里编写,如何编写awk命令和脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux内核编程的特点
- 下一篇: linux 磁盘科隆,上海第二工业大学嵌