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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux shell之awk

發布時間:2023/12/4 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux shell之awk 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 awk

awk 是一款設計用于數據流的工具,?awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處
awk 腳本的結構基本如下所示:

awk ' BEGIN{print "start" } pattern { commands } END{ print "end" } file

awk 腳本通常由3部分組成。 BEGIN , END 和帶模式匹配選項的常見語句塊。這3個部分都是可選項,在腳本中可省略任意部分。

?

?

?

?

?

?

?

2 命令執行過程

awk 命令的工作方式如下所注。
(1) 執行 BEGIN { commands } 語句塊中的語句。
(2) 從文件或 stdin 中讀取一行,然后執行 pattern { commands } 。重復這個過程,直到文件全部被讀取完畢。
(3) 當讀至輸入流末尾時,執行 END { commands } 語句塊。
?

?

?

?

?

3 一般使用

1)普通執行一個最簡單的命令

echo -e "hello\nword" | awk 'BEGIN{print "chenyu"} {print} END{print "linux shell"}' chenyu hello word linux shell

要記得打印是print "chenyu",這里是雙引號

?

?

?

?

2)帶參數打印

echo | awk '{var1="v1"; var2="v2"; var3="v3"; print var1 "-" var2 "-" var3}{}{}' v1-v2-v3echo | awk '{var1="v1"; var2="v2"; var3="v3"; print var1, var2, var3}{}{}' v1 v2 v3

參數要用雙引號,打印print后面用,隔開

?

?

?

3?特殊變量

以下是可以用于 awk 的一些特殊變量。
NR :表示記錄數量,在執行過程中對應于當前行號。
NF :表示字段數量,在執行過程中對應于當前行的字段數。
$0 :這個變量包含執行過程中當前行的文本內容。
$1 :這個變量包含第一個字段的文本內容。
$2 :這個變量包含第二個字段的文本內容。

?

echo -e "chen gong yu\n chen cai feng\n chen zi xuan" | awk '{print "Line no:" NR ", all field:" NF, "$0 =" $0, "$1="$1, "$2="$2 "$3="$3}' Line no:1, all field:3 $0 =chen gong yu $1=chen $2=gong$3=yu Line no:2, all field:3 $0 = chen cai feng $1=chen $2=cai$3=feng Line no:3, all field:3 $0 = chen zi xuan $1=chen $2=zi$3=xuanecho -e "chen gong \n chen cai feng\n chen zi xuan" | awk '{print "Line no:" NR ", all field:" NF, "$0 =" $0, "$1="$1, "$2="$2 "$3="$3}' Line no:1, all field:2 $0 =chen gong $1=chen $2=gong$3= Line no:2, all field:3 $0 = chen cai feng $1=chen $2=cai$3=feng Line no:3, all field:3 $0 = chen zi xuan $1=chen $2=zi$3=xuan

awk 的一些基本用法

?

?

1) 打印每一行的第2和第3個字段
?

cat 1.txt 1111 22 33 111 44 55awk '{print $2, $3}' 1.txt 22 33 44 55

?或者我們打印字一行字符串的第二個字符串

echo "hello word" | awk '{print $1}' hello

輸出的命令得到的結果和awk組合使用

info1=$(md5sum 1.cpp | awk '{print $1}') info2=$(md5sum 1.cpp | awk '{print $2}') echo $info1 2f56b3e40c1bdd15feb924049e127b23 echo $info2 1.cpp

?

?

?

2) 要統計文件中的行數

awk 'END{ print NR }' fileawk 'END{print NR}' 1.txt2

?

?

3) awk默認是的字段定界符是空格,我們也可以用-F進行來指定如下

echo "chen*yu*ni*hao" | awk -F '*' '{print $3}' ni

?

?

?

?

?

4?將外部變量值傳遞給 awk

方式1

value=chenyu echo | awk -v vvv=$value '{print vvv}' chenyu

方式2

var1="chen" ; var2="yu" echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2 chen yu

?

?

?

?

五:總結

一般我們要得到打印的字符串或者文本里面的第幾行的第幾個字段一般使用awk命令。

經典簡單用法如下:

value=$(echo "chen*yu*ni*hao" | awk -F '*' '{print $3}') echo $value ni

?

value1=$(echo "chen yu ni hao" | awk '{print $3}') echo $value1 ni

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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