欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell進階awk命令編排字段使用詳解

 更新時間:2023年09月25日 08:48:16   作者:bug生產(chǎn)者  
這篇文章主要為大家介紹了shell進階awk命令編排字段使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

awk命令

awk是shell進階的重要命令,可以用來編排字段

awk把輸入流看做一串記錄的集合,每條記錄都可以進一步細(xì)分為字段,一個awk程序是一對以模式和大括號框起來的操作組合而成的,awk每次從文件中讀取一條記錄

awk [選項] '條件{動作} 條件{動作}' 文件
 -v 設(shè)置變量值

pattern {action} 如模式匹配,則執(zhí)行操作
pattern {action}
# 打印第一個字段
awk 'print $1'
# 打印整行
awk 'print $0'
# 打印第2與第5個字段
awk 'print $2,$5'
# 打印非空行
awk 'NF  > 0 {print $0}'

在讀取數(shù)據(jù)時,默認(rèn)的分隔符是空格,可以使用-F來指定分隔符

#awk [-F 分隔符] '命令' input-file
# 分隔符默認(rèn)是空格
# 例: 打印出root用戶記錄
awk -F: '$1=="root"{print $0}' /etc/passwd

在輸出數(shù)據(jù)時,默認(rèn)的分隔符是空格,可以使用-v來設(shè)置輸出字段分隔符

# 默認(rèn)情況下,-v 改變輸出字段的分隔字符,這里必須設(shè)置OFS變量來改變輸出字段分隔符
awk -F: -v 'OFS=**' '{print $1,$5}' /etc/passwd

標(biāo)量變量

保存單一值的變量叫做標(biāo)量變量,常用的有

  • FILENAME 當(dāng)前輸入文件的名稱

FNR 當(dāng)前輸入文件的當(dāng)前行號,當(dāng)有多個輸入文檔時相當(dāng)有用

FNR == 3   選定第三條記錄

  • FS 字段分隔符,默認(rèn)為空格

NF 當(dāng)前記錄的字段數(shù)

NF == 0    選定空記錄
NF > 3     選定擁有三個字段以上的記錄
NF < 5     選定第1到第4條記錄

  • NR 輸入數(shù)據(jù)流的當(dāng)前行號
  • OFS 輸出字段分隔字符,默認(rèn)為空格
  • ORS 輸出記錄分隔字符,默認(rèn)為\n
  • RS 輸入記錄分隔字符
  • $0 當(dāng)前行的全部內(nèi)容
  • $n 當(dāng)前行的第n的字段的內(nèi)容

自定義變量

可以使用-v來設(shè)置自定義變量

free | awk -v age="10" -v name="lily" '{print name,age}'
lily 10
lily 10
lily 10

BEGIN和END

BEIGIN

BEGIN導(dǎo)致動作指令僅在讀取任何數(shù)據(jù)記錄之前執(zhí)行一次

awk 'BEGIN {print "OK"}'
OK

END

END導(dǎo)致動作指令僅在讀取完所有數(shù)據(jù)記錄后執(zhí)行一次

free | awk 'END {print "共有"NR"行"}'
共有3行

條件判斷

awk還支持if判斷語句

if(判斷條件){
動作指令1;
} else if(判斷條件2){
動作指令2;
} else {
動作指令N;
}

free | awk '{if(NR==1){print $1}else if(NR==2){print $2}}'
total
8008932

循環(huán)語句

awk還支持循環(huán),如for循環(huán)、while循環(huán),且支持使用continue、break、exit來進行中斷

for循環(huán)

for(表達式1;表達式2;表達式3) {
動作指令序列
}

awk 'BEGIN{ for (i=1;i<=4;i++) {print i}}'
1
2
3
4

while循環(huán)

while(條件判斷){
動作指令序列;
}

awk 'BEGIN{ i=1; while(i<=4) {print i;i++}}'
1
2
3
4

命令行參數(shù)

awk通過內(nèi)建變量ARGC(參數(shù)計數(shù))和ARGV(參數(shù)值)讓命令行參數(shù)可用

awk 'BEGIN {print ARGV[0]}'

輸出 awk 

awk 'BEGIN {for (k=0;k<ARGC;k++) print "ARGV["k"]=["ARGV[k]"]"}' a b c
ARGV[0]=[awk]
ARGV[1]=[a]
ARGV[2]=[b]
ARGV[3]=[c]

舉例

統(tǒng)計磁盤可用空間

df | grep -v tmpfs | awk '{sum+=$4} END{print "磁盤可用容量:"sum/1024/1024"G"}''

磁盤可用容量:1.01912G

統(tǒng)計nginx各ip訪問次數(shù)

awk ' \
> {IP[$3]++} \
> END { \
> for (i in IP) {print i,IP[i]} \
> }' /var/log/nginx/access.log

以上就是shell進階awk命令編排字段使用詳解的詳細(xì)內(nèi)容,更多關(guān)于shell awk命令編排字段的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 每天一個linux命令之locate 命令

    每天一個linux命令之locate 命令

    locate命令可以在搜尋數(shù)據(jù)庫時快速找到檔案,數(shù)據(jù)庫由updatedb程序來更新,updatedb是由cron daemon周期性建立的,這篇文章主要介紹了每天一個linux命令之locate 命令的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • shell命令行參數(shù)用法簡介

    shell命令行參數(shù)用法簡介

    本文介紹了shell命令行參數(shù)的用法,對于普通腳本語言諸如perl python等,寫一個腳本程序,包裝命令行參數(shù)時,一般都是用getopt之類的;c語言也類似
    2014-04-04
  • getopts解析shell腳本命令行參數(shù)的方法

    getopts解析shell腳本命令行參數(shù)的方法

    getpots是Shell命令行參數(shù)解析工具,旨在從Shell Script的命令行當(dāng)中解析參數(shù),這篇文章主要介紹了getopts解析shell腳本命令行參數(shù),需要的朋友可以參考下
    2023-01-01
  • linux自動重啟tomcat腳本分享

    linux自動重啟tomcat腳本分享

    linux自動重啟tomcat腳本分享,大家參考使用吧
    2013-12-12
  • 合并一個文件夾下多個文件內(nèi)容的單行shell命令

    合并一個文件夾下多個文件內(nèi)容的單行shell命令

    有時候我們需要合并一個文件夾下多個文件內(nèi)容,那么就可以參考下面的代碼,單行shell就是可以實現(xiàn)了,需要的朋友可以參考下
    2013-02-02
  • Linux命令每天必學(xué)之 useradd/adduser 新增用戶

    Linux命令每天必學(xué)之 useradd/adduser 新增用戶

    Linux下useradd或adduser命令用來建立用戶帳號和創(chuàng)建用戶的起始目錄,使用權(quán)限是超級用戶。接下來通過本文給大家介紹每天必學(xué)Linux命令之 useradd/adduser 新增用戶的相關(guān)知識,需要的朋友參考下吧
    2018-10-10
  • Linux通過sar命令查看網(wǎng)卡流量

    Linux通過sar命令查看網(wǎng)卡流量

    sar(System Activity Reporter系統(tǒng)活動情況報告)是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一,這篇文章主要介紹了Linux通過sar命令查看網(wǎng)卡流量,需要的朋友可以參考下
    2017-11-11
  • bash提取字符串${string:position:length}的具體使用

    bash提取字符串${string:position:length}的具體使用

    本文主要介紹了bash提取字符串${string:position:length}的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 自動重啟服務(wù)的shell腳本代碼

    自動重啟服務(wù)的shell腳本代碼

    公司tomcat服務(wù)器有個過一段時間自動會掛的bug一直沒能解決,掛的時候還要手動重啟tomcat,于是決定寫個腳本讓它定時檢測故障自動重啟吧
    2013-06-06
  • Linux traceroute命令使用方法實例詳解

    Linux traceroute命令使用方法實例詳解

    這篇文章主要介紹了Linux traceroute命令使用方法實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解應(yīng)用這部分內(nèi)容, 需要的朋友可以參考下
    2017-10-10

最新評論