亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Shell腳本中使用awk指令

發布時間:2021-04-01 16:11:37 來源:億速云 閱讀:587 作者:Leah 欄目:開發技術

如何在Shell腳本中使用awk指令?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

語法格式:awk [選項]  '指令'  操作文件

常用選項:-F  指定分隔符,分隔符用""引起來

  • -v:var=value在awk程序開始之前指定一個值valu給變量var,這些變量值用于awk程序的BEGIN快

  • -f:后面跟一個保存了awk程序的文件,代替在命令行指定awk程序

實例1:在命令行直接輸入awk指令

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

如何在Shell腳本中使用awk指令

awk '{print $0}' 1.txt #逐行讀取文件內容,并打印該行,$0保存的是當前行的內容

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

實例2:將awk指令寫入文件,通過-f選項調用

vim awkscript
BEGIN {
FS=":"
}
{print $1}
awk -f awkscript /etc/passwd #通過調用awk指令文件來執行awk命令

如何在Shell腳本中使用awk指令

實例3:awk的BEGIN塊和END塊

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

END用于執行最后的運算或者打印最終的輸出結果

END塊和BEGIN不是必須的

實例4:在awk中使用正則匹配,正則表達式必須要放在//中

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

實例5:awk的表達式和塊

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

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

如何在Shell腳本中使用awk指令

實例6:awk中的條件語句

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

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

awk '/ock/{print NF}' 1.txt # 統計匹配ock的行有多少列

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

$NF記錄的是當前行最后一列的內容(如果每一行有多列內容)

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

如何在Shell腳本中使用awk指令

NR記錄的是當前行的行號

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

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

如何在Shell腳本中使用awk指令

awk腳本示例1:

功能:打印1.txt文本中每一列的內容

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

如何在Shell腳本中使用awk指令

如何在Shell腳本中使用awk指令

看完上述內容,你們掌握如何在Shell腳本中使用awk指令的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇文区| 沾益县| 德令哈市| 敦化市| 古田县| 建宁县| 舟山市| 天门市| 濉溪县| 威宁| 舒城县| 乐至县| 会东县| 会同县| 江阴市| 乃东县| 兰溪市| 贵定县| 札达县| 河曲县| 资溪县| 五莲县| 弋阳县| 浦东新区| 原阳县| 胶州市| 明溪县| 奈曼旗| 郑州市| 怀仁县| 隆林| 周至县| 舞阳县| 洮南市| 楚雄市| 阳东县| 克东县| 谢通门县| 南昌市| 凤冈县| 克什克腾旗|