linux awk f,linux的awk詳情(上)

一丶awk介紹

AWK是一種處理文本文件的語言,是一個強大的文本分析工具,可以報告生成器,格式化文本輸出

1.常用語法

awk [options] ‘program’ var=value file…

awk [options] -f programfile var=value file…

awk [options] 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' file ...

2.常用選項

-F 指明輸入時用到的字段分隔符

-v var=value: 自定義

3.基本格式

awk [options] 'program' file…

program:pattern{action statements;..}

pattern和action:

? pattern部分決定動作語句何時觸發及觸發事件

BEGIN,END

? action statements對數據進行處理,放在{}內指明

print, printf

(#要點

(1) 逗號分隔符

(2) 輸出的各item可以字符串,也可以是數值;當前記錄的字段、

變量或awk的表達式

(3) 如省略item,相當于print $0)

例:

~]# awk '{print "hello,awk"}'

~]# awk –F: '{print}' /etc/passwd

~]# awk –F: ‘{print “wang”}’ /etc/passwd

~]# awk –F: ‘{print $1}’ /etc/passwd

~]# awk –F: ‘{print $0}’ /etc/passwd

~]# awk –F: ‘{print $1”\t”$3}’ /etc/passwd

~]# awk -F: '{printf "username:%-20s salary:%-10.2f shell:%s\n",$1,$3,$7}' /etc/passwd

~]# tail -3 /etc/fstab |awk '{print $2,$4}'

4.變量

變量:內置和自定義變量

FS:輸入字段分隔符,默認為空白字符

awk -v FS=':' '{print $1,FS,$3}’ /etc/passwd

awk –F: '{print $1,$3,$7}’ /etc/passwd

OFS:輸出字段分隔符,默認為空白字符

awk -v FS=‘:’ -v OFS=‘:’ '{print $1,$3,$7}’ /etc/passwd

RS:輸入記錄分隔符,指定輸入時的換行符,原換行符仍有效

awk -v RS=' ' ‘{print }’ /etc/passwd

ORS:輸出記錄分隔符,輸出時用指定符號代替換行符

awk -v RS=' ' -v ORS='###'‘{print }’ /etc/passwd

NF:字段數量

awk -F: ‘{print NF}’ /etc/fstab (#引用內置變量不用$)

awk -F: '{print $(NF-1)}' /etc/passwd

NR:行號

awk '{print NR}' /etc/fstab ; awk END'{print NR}' /etc/fstab

FNR:各文件分別計數,行號

awk '{print FNR}' /etc/fstab /etc/inittab

FILENAME:當前文件名

awk '{print FILENAME}’ /etc/fstab

ARGC:命令行參數的個數

awk '{print ARGC}’ /etc/fstab /etc/inittab

awk ‘BEGIN {print ARGC}’ /etc/fstab /etc/inittab

ARGV:數組,保存的是命令行所給定的各參數

awk ‘BEGIN {print ARGV[0]}’ /etc/fstab /etc/inittab

awk ‘BEGIN {print ARGV[1]}’ /etc/fstab /etc/inittab

(#要點:自定義變量{區分字符大小寫}

(1) -v var=value

(2) 在program中直接定義)

例:

awk -v test='hello gawk' '{print test}' /etc/fstab

awk -v test='hello gawk' 'BEGIN{print test}'

awk 'BEGIN{test="hello,gawk";print test}'

awk –F:‘{sex=“male”;print $1,sex,age;age=18}’ /etc/passwd

cat awkscript

{print script,$1,$2}

awk -F: -f awkscript script=“awk” /etc/passwd

5.printf命令

格式化并輸出結果到標準輸出。

1)格式化輸出:

格式化輸出:printf “FORMAT”, item1, item2, ...

必須指定FORMAT

不會自動換行,需要顯式給出換行控制符,\n

FORMAT中需要分別為后面每個item指定格式符

2)格式符:

格式符:與item一一對應

%c: 顯示字符的ASCII碼

%d, %i: 顯示十進制整數

%e, %E:顯示科學計數法數值

%f:顯示為浮點數

%g, %G:以科學計數法或浮點形式顯示數值

%s:顯示字符串

%u:無符號整數

%%: 顯示%自身

3)修飾符:

#[.#]:第一個數字控制顯示的寬度;第二個#表示小數點后精度,%3.1f

-: 左對齊(默認右對齊) %-15s

+:顯示數值的正負符號 %+d

例:

awk -F: ‘{printf "%s",$1}’ /etc/passwd

awk -F: ‘{printf "%s\n",$1}’ /etc/passwd

awk -F: '{printf "%-20s %10d\n",$1,$3}' /etc/passwd

awk -F: ‘{printf "Username: %s\n",$1}’ /etc/passwd

awk -F: ‘{printf “Username: %s,UID:%d\n",$1,$3}’/etc/passwd

awk -F: ‘{printf "Username: %15s,UID:%d\n",$1,$3}’ /etc/passwd

awk -F: ‘{printf "Username: %-15s,UID:%d\n",$1,$3}’ /etc/passwd

例:

1.用awk求出磁盤利用。

~]# df |grep /dev/sd |awk '{printf "DevName:%s Used:%s\n",$1,$5}'

DevName:/dev/sda2 Used:19%

DevName:/dev/sda3 Used:1%

DevName:/dev/sda1 Used:55%

2.將/etc/passwd第一列當作姓名,第三列當作工資,打印報表,要求顯示:

Name:zhangsan Salary:3300 Level:High

工資大于3000的,Level顯示High,大于1000,小于等于3000的顯示Soso,小于1000的顯示LOW。

~]# awk -F: '{if($3>3000){Level="High"}else if($3>1000 && $3<=3000){Level="Soso"}else{Level="Low"};printf "Name:%-20s Salary:%-20d Level:%s\n",$1,$3,Level}' /etc/passwd

Name:root Salary:0 Level:Low

Name:bin Salary:1 Level:Low

Name:daemon Salary:2 Level:Low

Name:adm Salary:3 Level:Low

Name:lp Salary:4 Level:Low

......

3.利用echo {1..10},打印如下結果:

~]# echo {1..10} |awk '{i=1;while(i<=NF){if($i%2==0){print $i,"is oushu"} else{print $i, "is jishu"};i++}}'

1 is jishu

2 is oushu

3 is jishu

4 is oushu

5 is jishu

6 is oushu

7 is jishu

8 is oushu

9 is jishu

10 is oushu

4.顯示文件的行

~]# awk '{i=1;sum=0;while(i<=NF){sum+=$i;i++};print sum}' x.txt #顯示每行各自的總行

55

155

~]# awk '{i=1;while(i<=NF){sum+=$i;i++};print sum}' x.txt #每行顯示一次總和

55

210

~]# awk '{i=1;while(i<=NF){sum+=$i;i++}}END{print sum}' x.txt #只顯示總和

210

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

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

相關文章

C#的async和await

C# 5.0中引入了async 和 await。這兩個關鍵字可以讓你更方便的寫出異步代碼。 看個例子&#xff1a; public class MyClass {public MyClass(){DisplayValue(); //這里不會阻塞System.Diagnostics.Debug.WriteLine("MyClass() End.");}public Task<double> Get…

eclipse創建android工程,在eclipse創建android 工程

1.在工具欄選擇"New".在彈出對話框里&#xff0c;開打android文件夾&#xff0c;選擇"android application Project"&#xff0c;選擇“Next”.2.Application Name: 應用程序名稱。Projetc Name: 工程名稱。Packet Name: 包名稱. 注意&#xff0c;包名稱…

SQL select查詢原理--查詢語句執行原則轉

1.單表查詢&#xff1a;根據WHERE條件過濾表中的記錄&#xff0c;形成中間表&#xff08;這個中間表對用戶是不可見的&#xff09;&#xff1b;然后根據SELECT的選擇列選擇相應的列進行返回最終結果。 1)簡單的單表查詢 SELECT 字段 FROM 表名 WHERE 條件表達式 那它們是按什么…

android導航二級分類,Android實現騰訊新聞的新聞類別導航效果

效果圖如下所示&#xff1a;1、在Adapter中加入如下代碼private int clickTemp -1;//TODO 被選擇的item下標/** * TODO 傳入下標&#xff0c;設置被選擇的item * * param position */public void setSelection(int position) {clickTemp position;}2、在Adapter的getView方法…

Linux下訪問window掛載的磁盤

點擊window掛在的磁盤,如下圖左側"文檔". 出現如下錯誤: Error mounting /dev/sda3 .... Command-line mount -t "ntfs" -o "uhelperudisks2 修復辦法: sudo ntfsfix /dev/sda6 參考資料: 1. win8安裝ubuntu后不能訪問windows其他磁盤轉載于:https:…

linux遍歷目錄源代碼

<pre code_snippet_id"1622396" snippet_file_name"blog_20160324_1_744516" name"code" class"cpp">遍歷目錄獲取整個目錄的占用空間: uint64_t dir_space(char *path) {int ret 0;uint64_t space 0;char cur_dir[PATH_MAX …

android studio 手動安裝gradle,Android Studio 如何安裝Gradle?

今天新下載安裝了Android Studio 2.1&#xff0c;啟動并新建第一個項目&#xff0c;結果卡在 gradle 上。網上搜原因&#xff0c;得到這個網頁&#xff1a;http://blog.csdn.net/maxsky/article/details/50204093。說是要自己下載 gradle的壓縮包&#xff0c;查了項目目錄下的 …

Label 表達式綁定

Text<%#"總金額為: "Convert.ToString(Convert.ToDecimal(TextBox1.Text)*Convert.ToInt32(TextBox2.Text)%> Page_Load { Page.DataBind(); }轉載于:https://www.cnblogs.com/handsomer/p/4150386.html

(轉)如果知道dll文件是面向32位系統還是面向64位系統的?

本文為轉載文章&#xff0c;原文地址&#xff1a;http://www.cnblogs.com/qguohog/archive/2011/09/13/2174897.html&#xff0c;僅僅是記錄供后續使用&#xff0c;如有侵權請通知刪除。 在發布dll時&#xff0c;可以選擇編譯為x86模式、x64模式以及Any Cpu模式等。那么對于已經…

Spring Roo 簡介

一直以來&#xff0c;Java/Spring開發被認為是笨重的代表&#xff0c;無法快速生成項目原型和骨架。所以&#xff0c;Spring推出了Spring Roo這個項目&#xff0c;幫助我們快速生成項目原型。本文參考自Spring Roo的官方文檔&#xff0c;如果熟悉英文的話可以直接看原文檔&…

雙緩沖 android,Android 的 SurfaceView 雙緩沖應用

075 int index 0;本文引用地址&#xff1a;http://www.eepw.com.cn/article/201610/305442.htm076 try {077 index field.getInt(R.drawable.class);078 } catch (IllegalArgumentException e) {079 // TODO Auto-generated catch block080 e.printStackTrace();081 } catch …

Windows—JDK安裝與環境變量配置

本文介紹JDK的安裝與環境變量配置。 工具/原料 JDK1.8.0_65WIN7 32bitjdk-8u65-windows-i586.exe方法/步驟 安裝JDK 選擇安裝目錄 安裝過程中會出現兩次 安裝提示 。第一次是安裝 jdk &#xff0c;第二次是安裝 jre 。建議兩個都安裝在同一個java文件夾中的不同文件夾中。&…

典型案例道出“服務臺”的價值

引 言&#xff1a;作為運營管理著龐大IT系統的CIO&#xff0c;相信您或多或少都嘗試過&#xff0c;或正建有IT服務臺&#xff08;或幫助臺&#xff09;&#xff0c;然而您可能依然面臨服務效率低下&#xff0c;用戶滿意度欠佳的 困擾。這其中的原因&#xff0c;多半就在于您的服…

數據的藝術

數據的藝術概念:數據 --程序操作的對象&#xff0c;用于描述客觀事物。數據的特點:a. 可以輸入到計算機b. 可以被計算機程序處理*數據是一個抽象的概念&#xff0c;將其進行分類得到程序設計語言中的類型。數據元素 -組成數據的基本單位a. 數據項:一個數據元素由若干數據項組成…

處理ajax的session超時

做web開發時&#xff0c;當session超時時&#xff0c;如果不是ajax請求&#xff0c;很簡單就能實現跳到指定的頁面。但是ajax請求就會有問題。session超時的時候&#xff0c;點擊到ajax請求就會彈出一些頁面源碼文件。 首先建了個攔截器&#xff0c;來判斷session超時。用戶登錄…

菜根譚#249

色欲火熾&#xff0c;而一念及病時便興似寒灰&#xff1b; 名利飴甘&#xff0c;而一想到死地便味如嚼蠟。 故人常憂死慮病&#xff0c;亦可消幻業而長道心。轉載于:https://www.cnblogs.com/star4knight/p/4154590.html

實現物聯網項目,你需要提前知道的6件事情

目前為止&#xff0c;對于大多數尋求數字化與服務化轉型的制造商來說&#xff0c;實現物聯網應用項目仍然是一個很大的挑戰。 我們此前做過一項研究&#xff0c;到2016年底,全球企業級物聯網項目將超過10000個。但是其中大部分的項目都還是處于初期概念驗證(PoC)階段&#xff0…

android腳本快捷方式,Android:如何創建主屏幕快捷方式啟動shell腳本?

答案&#xff1a;您的問題的答案應該是GScript(開放源代碼和“根除設備上的任何地方”),但是當腳本完成時,誰想要盯著該模態終端輸出屏幕&#xff1f;詳情如下.> SManager (free version)將讓您將自定義腳本存儲在設備的任何位置,即使您使用根設備的內部存儲也是如此.它將允…

讀書 文摘 筆記

鳳凰項目: 一個IT運維的傳奇故事 微信商城開發實戰 跨境電商多平臺運營 活出生命的意義 托馬斯阿爾瓦愛迪生 奇跡的一生 阿爾伯特愛因斯坦 固執 自信 專利局 我的世界觀 愛因斯坦 艾薩克牛頓 母親讓牛頓停學在家務農&#xff0c;贍養家庭。但牛頓一有機會便埋首書卷&#…

修改Visual Stdio 2010界面,以及添加一些其它VS2010的插件

打開 Tools\Extension Manager&#xff08;工具\擴展管理器&#xff09;。 點聯機庫。 搜索“visual studio color theme editor”&#xff0c;就能看到一個名為“visual studio color theme editor”的擴展&#xff0c; 下載安裝好這個擴展&#xff0c;重新啟動 Visual Studio…