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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

awk的基础应用

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 awk的基础应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

awk是一種編程語言,主要用于在linux/unix下對文本和數據進行處理,是linux/unix下的一個工具。數據可以來自標準輸入、一個或多個文件,或其它命令的輸出。awk的處理文本和數據的方式:逐行掃描文件,默認從第一行到最后一行,尋找匹配的特定模式的行,并在這些行上進行你想要的操作。gawk是awk的GNU版本,它提供了Bell實驗室和GNU的一些擴展。下面介紹的awk是以GNU的gawk為例的,在linux系統中已把awk鏈接到gawk,所以下面全部以awk進行介紹。




awk命令兩種使用方式:
1)命令模式
awk [options] 'commands' file(s)
option 部分
-F 定義字段分割符號
-v 定義變量并賦值
command 部分:
1、范圍說明或者正則表達式或者{awk命令語句1;awk命令語句2;}
2、范圍說明部分可以是BEGIN、END、邏輯表達式或者為空
3、awk命令語句間用分號間隔
4、引用shell 變量需用雙引號引起


2)腳本模式
awk [options] -f scriptfile file(s)
特點:
1、awk腳本是awk命令的清單
2、命令需要用分號間隔
3、#號開頭的是注釋行
4、# !/bin/awk -f


字段分割及相關變量:
$1,$2,$3...$n:awk中用該順序形式表示files中每行以間隔符號分割的各列的不同字段
$0表示文本本身
注:
awk默認以空格符為間隔符號將每行分割為單獨的字段,也可以使用awk內置變量FS定義間隔符號

NF 表示當前記錄的字段數(列數)
$NF 最后一列
$(NF-1) 倒數第二列
FNR/NR 行號
FILENAME 文件名
"\t" 制表符
RS 換行符
"" 打印字符串
FS 定義間隔符

關于awk的練習:

1.截取/etc/passwd前五行的倒數第二列
head -5 /etc/passwd|tail -5|awk -F":" '{print $(NF-1)}'


2.打印第五行
head -5 /etc/passwd |tail -1
awk 'NR==5? {print $0}' /etc/passwd
awk '{if (NR==5) print $0}' /etc/passwd

3.打印第五行的第五列
awk -F: 'NR==5? {print $5}' /etc/passwd

4.打印第五行和第六行
awk 'NR==5||NR==6 {print $0}' /etc/passwd

5.找出/etc/以.conf結尾的文件的名字(如:kernelcap-2.6.18-164.el5.conf,只需要得到kernelcap-2.6.18-164.el5就可以了)
find /etc/ -name "*.conf"|awk -F"." '{print $(NF-1)}'|awk -F"/" '{print $NF}'

6.打印每一行的最后一列(可以以/etc/passwd文件為例,以下相同)
cat /etc/passwd |awk -F":" '{print $NF}'

7.打印每行的字段數
?cat /etc/passwd |awk -F":" '{print NF}'

8.打印第五行的字段數
cat /etc/passwd |awk -F":" '{print FNR,NF}'|grep ^5.[[:digit:]]$

9.打印最后一行
cat /etc/passwd|tail -1

10.打印最后一行的最后一列
cat /etc/passwd|tail -1|awk -F":" '{print $NF}'

11.打印前五行
?cat /etc/passwd|head -5

12.打印五到十行,并在前面加上行號
awk -F: '{print NR,$0}' /etc/passwd|head -10|tail -6

13.打印奇數行 (刪除偶數行)
cat /etc/passwd|grep -n x|awk '{if (NR%2==1) print $0}'

14.打印偶數行 (刪除奇數行)
cat /etc/passwd|grep -n x|awk '{if (NR%2==0) print $0}'

?

15.統計/etc/passwd一共出現了多少次bash字符 (要求用awk)
cat /etc/passwd|grep bash|awk -F"[:/]" '{{count++;}} END{print count}'

?

轉載于:https://www.cnblogs.com/lvzehua2009/p/8134325.html

總結

以上是生活随笔為你收集整理的awk的基础应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。