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

Shell腳本中awk指令的用法

 更新時(shí)間:2019年03月06日 16:12:55   作者:wdz306ling  
今天小編就為大家分享一篇關(guān)于Shell腳本中awk指令的用法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

語(yǔ)法格式:awk [選項(xiàng)]  '指令'  操作文件

常用選項(xiàng):-F  指定分隔符,分隔符用""引起來(lái)

  • -v:var=value在awk程序開(kāi)始之前指定一個(gè)值valu給變量var,這些變量值用于awk程序的BEGIN快
  • -f:后面跟一個(gè)保存了awk程序的文件,代替在命令行指定awk程序

實(shí)例1:在命令行直接輸入awk指令

awk '{print}' 1.txt  #逐行讀取文件1.txt內(nèi)容并打印

awk '{print $0}' 1.txt #逐行讀取文件內(nèi)容,并打印該行,$0保存的是當(dāng)前行的內(nèi)容

awk '{print "hello"}' 1.txt  #逐行讀取1.txt文件內(nèi)容,每行結(jié)束后打印一個(gè)hello,文件1.txt有多少行就打印多少個(gè)hello

awk '{print $1}'  1.txt  #打印1.txt的第一列內(nèi)容,在不指定分割符的情況下,awk默認(rèn)使用空白做分割符

awk  -F ":" '{print $1}' /etc/passwd   #以":"為分隔符打印/etc/passwd文件的第一例內(nèi)容

實(shí)例2:將awk指令寫(xiě)入文件,通過(guò)-f選項(xiàng)調(diào)用

vim awkscript
BEGIN {
FS=":"
}
{print $1}
awk -f awkscript /etc/passwd #通過(guò)調(diào)用awk指令文件來(lái)執(zhí)行awk命令

實(shí)例3:awk的BEGIN塊和END塊

BEGIN用于初始化FS變量(列分隔符),打印標(biāo)題,或者初始化后需要在程序中調(diào)用的全局變量

END用于執(zhí)行最后的運(yùn)算或者打印最終的輸出結(jié)果

END塊和BEGIN不是必須的

實(shí)例4:在awk中使用正則匹配,正則表達(dá)式必須要放在//中

awk '/123/{print}'  1.txt  #打印1.txt中匹配123的那一行內(nèi)容

awk -F ":"  '/123/{print $2}' 1.txt  #以":"為分隔符打印1.txt中匹配123的那一行中,第二列的內(nèi)容

awk -F ":" '$1 ~ /root/{print $2}'  /etc/passwd #打印/etc/passwd中,第一列匹配root的行其第二列的內(nèi)容 ~表示匹配

實(shí)例5:awk的表達(dá)式和塊

awk提供了多個(gè)比較操作符:"=="  ">" "<"  "<=" ">="  "!="   "~"匹配    "!~"不匹配

awk 'BEGIN{ FS=":"} $1 == "root" {print $3}'  /etc/passwd #以":"為分隔符,打印/etc/passwd中第一列是root的行其第3列的內(nèi)容

實(shí)例6:awk中的條件語(yǔ)句

awk 'BEGIN {FS=":"} {if ($1 ~ "root") {print $2}}'  /etc/passwd # 以":"為分隔符,打印/etc/passwd文件中第一列匹配root的行,其第二列的內(nèi)容

awk 'BEGIN {FS=":"} ($1 ~ "linux" || $2 ~ "Network") {print $3}'  1.txt # 以":"為分隔符,打印1.txt文件中,第一列匹配linux或者第二列匹配N(xiāo)etwork的行,其第三列的內(nèi)容

在awk中NF變量記錄的是當(dāng)前行中有多少列(默認(rèn)是空格為分割符)

awk '/ock/{print NF}' 1.txt # 統(tǒng)計(jì)匹配ock的行有多少列

awk 'NF == 3 {print}'  1.txt  #打印1.txt中有3列的行的內(nèi)容,示例中,第二行有三列,所以打印的就是第二行的內(nèi)容

$NF記錄的是當(dāng)前行最后一列的內(nèi)容(如果每一行有多列內(nèi)容)

awk '{if (NR > 3) {print $NF} }' 1.txt    # 輸出1.txt中行號(hào)大于3的行,其最后一列的內(nèi)容 

NR記錄的是當(dāng)前行的行號(hào)

awk '{if (NR > 3) {print NR".\t"$0} }' 1.txt  #格式化輸入1.txt中行號(hào)大于3的行的行號(hào)和內(nèi)容

awk 'BEGIN { x=0 } /^$/{x=x+1} END{print "find" " " x " " "blank lines"}'  1.txt  #統(tǒng)計(jì)1.txt中有多少空行

awk '{print ($2**2) +1}'  3.txt  #將3.txt文件中第二列內(nèi)容做平方運(yùn)算后再加1輸入(字符串做平方運(yùn)算后結(jié)果為0)

awk腳本示例1:

功能:打印1.txt文本中每一列的內(nèi)容

#!/bin/bash
num=`wc 1.txt | awk '{print $2}'`   # 統(tǒng)計(jì)1.txt文件有多少列
for i in `seq 1 $num`            # 根據(jù)文件列數(shù)進(jìn)行循環(huán)
do
 awk -v a=$i '{print $a}' 1.txt     # 打印每一列的內(nèi)容,-v 參數(shù)可以指定一個(gè)變量保存外部變量的值,將外部變量傳遞給awk
done

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • linux下監(jiān)控網(wǎng)絡(luò)流量的腳本

    linux下監(jiān)控網(wǎng)絡(luò)流量的腳本

    在我們的日常工作當(dāng)中,監(jiān)控網(wǎng)絡(luò)要么使用iptarf,ifstat這些命令實(shí)現(xiàn)的,但是需要裝額外的RPM包。特別是iptarf裝起來(lái)麻煩
    2013-01-01
  • Linux實(shí)現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    Linux實(shí)現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本

    數(shù)據(jù)備份的意義就在于,當(dāng)受到網(wǎng)絡(luò)攻擊、入侵、電源故障或者操作失誤等事故的發(fā)生后,可以完整、快速、簡(jiǎn)捷、可靠地恢復(fù)原有系統(tǒng)。本文為大家準(zhǔn)備了文件定期本地備份/異地備份/刪除備份的腳本,希望對(duì)你們有所幫助
    2022-10-10
  • shell腳本定時(shí)備份MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)并保留指定時(shí)間

    shell腳本定時(shí)備份MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)并保留指定時(shí)間

    這篇文章主要介紹了shell腳本定時(shí)備份MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)并保留指定時(shí)間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 用shell批量修改文件名的方法

    用shell批量修改文件名的方法

    這篇文章主要為大家介紹了shell對(duì)文件夾中全部文件的名稱(chēng)加以批量替換、修改的方法,文中的示例代碼講解詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 輸出執(zhí)行操作和打印日志的shell腳本實(shí)例

    輸出執(zhí)行操作和打印日志的shell腳本實(shí)例

    下面小編就為大家?guī)?lái)一篇輸出執(zhí)行操作和打印日志的shell腳本實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • linux shell實(shí)現(xiàn)判斷輸入的數(shù)字是否為合理的浮點(diǎn)數(shù)

    linux shell實(shí)現(xiàn)判斷輸入的數(shù)字是否為合理的浮點(diǎn)數(shù)

    這篇文章主要介紹了linux shell實(shí)現(xiàn)判斷輸入的數(shù)字是否為合理的浮點(diǎn)數(shù),需要的朋友可以參考下
    2016-08-08
  • shell 里面的奇葩字符實(shí)現(xiàn)

    shell 里面的奇葩字符實(shí)現(xiàn)

    這篇文章主要介紹了shell 里面的奇葩字符實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Linux命令之cat和tail的用法介紹

    Linux命令之cat和tail的用法介紹

    這篇文章主要,給大家?guī)?lái)的是?Linux?命令系列,要介紹的是兩個(gè)常用的查看文件內(nèi)容的命令:cat?和?tail?命令,文中代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • linux Shell腳本里面把一個(gè)數(shù)組傳遞到awk內(nèi)部進(jìn)行處理

    linux Shell腳本里面把一個(gè)數(shù)組傳遞到awk內(nèi)部進(jìn)行處理

    這篇文章主要介紹了linux Shell腳本里面把一個(gè)數(shù)組傳遞到awk內(nèi)部進(jìn)行處理,需要的朋友可以參考下
    2016-12-12
  • Shell腳本IF條件判斷和判斷條件總結(jié)

    Shell腳本IF條件判斷和判斷條件總結(jié)

    這篇文章主要介紹了Shell腳本IF條件判斷和判斷條件總結(jié),本文先是給出了IF條件判斷的語(yǔ)法,然后給出了常用的判斷條件總結(jié),需要的朋友可以參考下
    2014-10-10

最新評(píng)論