日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux下的awk程序在哪里编写,如何编写awk命令和脚本

發(fā)布時(shí)間:2023/12/10 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下的awk程序在哪里编写,如何编写awk命令和脚本 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。