シェルプログラミングにおける四銃士の awk

awk コマンド

コマンド ツールは、ファイル内の各行をスキャンして、コマンド ラインで指定されたものと一致するパターンを探します。一致が見つかった場合は、次のプログラミング ステップに進みます。一致するものが見つからない場合は、次の行まで処理を続けます。
文法:

awk [option] 'pattern{action}' file...
awk [选项]   '模式{动作}' 文件...    

options はオプション パラメータを意味し、pattern はパターンを意味し、action はアクションを意味し、awk はテキスト形式とフォーマットされた結果の出力に適しているため、最も一般的に使用されるアクションは print です。

一般的なオプションは次のとおりです。

-F  指定分割符,不指定默认以空格分割,示例: awk -F ':' '{print $1}' file.txt (或awk -F: '{ print $1 }' /etc/passwd)  使用-F 指定分隔符为冒号

モデル:

模式其实就表示条件,表示当满足什么条件后做对应的action动作
NR==2  表示取第2行

一般的に使用されるアクションは次のとおりです。

print 	:表示输出打印,示例: awk  '{print $1}' file.txt   # action为print,表示打印第1个变量值	

awk コマンドもファイルを行ごとに処理します. 1 行が処理された後, 次の行が処理されます. awk はユーザーが指定した区切り文字に従って動作します. 区切り文字が指定されていない場合, デフォルトではスペースで区切られます.各行が組み込み
変数に分割された後のデータをマップします。

一般的に使用される組み込み変数:

$0   :表示分割符分割后的全部列,其实就是一整行
$1   :表示分割符分割后的第1列
$2   :表示分割符分割后的第2列
......同理
NF(Number of fields) 分割后,字段总数,字段总数应该是一个整数,如 '{print NF }' 打印出7
$NF  :表示分割符分割后的最后一列,加上$号取值就表示最后一列了 
$(NF-1)  :表示分割符分割后的倒数第二列
$(NF-2)  :表示分割符分割后的倒数第三列
......同理
NR(Number of records):当前行数,行号,通常在模式中使用,如 NR==2表示第2行

デモの例:

[root@master ~]# cat /etc/passwd > file.txt 			#以passwd为例子
[root@master ~]# awk -F ':' '{print $0}' file.txt 		#指定分割符是冒号,输出全部列,其实就是一整行
[root@master ~]# awk -F ':' '{print}' file.txt    		#等价于上一行  
[root@master ~]# awk -F ':' '{print $1}' file.txt 		#指定分割符是冒号,输出打印第1列
[root@master ~]#  awk -F ':' '{print $1 $2}' file.txt 	#指定分割符是冒号,输出打印第1列和第2列,但是第1列和第2列连在一起了
rootx
binx
daemonx
.....
[root@master ~]# awk -F ':' '{print $1,$2}' file.txt 	#第1列和第2列加一个逗号,输出显示会默认空格隔间
[root@master ~]# awk -F ':' '{print "first:",$1,"----","secods:",$2}' file.txt	#print可以加格式化输出,但要使用双引号括起来
[root@master ~]# awk -F ':' '{print $NF}' file.txt				# $NF表示最后一列
[root@master ~]# awk -F ':' '{print $(NF-1)}' file.txt			# $(NF-1)表示倒数第2列
[root@master ~]# awk -F ':' 'NR==5{print $1}' file.txt 			#表示awk找到第5行,输出打印 第1列
[root@master ~]# awk -F ':' 'NR==1,NR==5{print $1}' file.txt 	#这是表示awk找到第1到第5行,输出打印 第1列
[root@master ~]# awk -F ':' '{print NR,$0}' file.txt 			#NR就是行号,输出打印全部行并带行号

おすすめ

転載: blog.csdn.net/MssGuo/article/details/117387197