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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

awk入门

發(fā)布時(shí)間:2025/3/11 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 awk入门 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

linux之a(chǎn)wk文本處理入門

1、awk簡介

awk是一種編程語言,用于linux下對文本和數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)可以來來自標(biāo)準(zhǔn)輸入、一個(gè)或多個(gè)文件,或其他命令的輸出。

更多作為腳本來使用。

awk處理數(shù)據(jù)的方式:逐行掃描文件,尋找匹配的特定模式的行,并在這些行上進(jìn)行你想要的操作。如果沒有指定動作,則把匹配的行顯示到標(biāo)準(zhǔn)輸出(屏幕)。如果沒有指定模式,則所有被操作所指定的行都被處理。

2、awk 兩種語法格式

awk [options] ‘commands’ filenames

awk [options] -f awk-script-file filenames

== options:

-F 定義輸入字段分隔符,默認(rèn)的分割符號是空格或者制表符

[root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 [root@localhost ~]# awk '{print $1}' /etc/hosts //獲取hosts文件的第一列 127.0.0.1 ::1 [root@localhost ~]# awk '{print $1}' /etc/passwd //默認(rèn)分隔符為空格或者\(yùn)t root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin[root@localhost ~]# awk -F ":" '{print $1}' /etc/passwd //指定分隔符為: root bin daemon

== command:

BEGIN{ }{ }END{ }
行處理前(發(fā)生在讀文件之前)行處理行處理后
通常用于定義一些變量,例如BEGIN{FS=’:’;OFS=’—’}
FS:字段分隔符
OFS:Out of Field Separator,輸出字段分隔符
[root@localhost ~]# awk 'BEGIN{print 3}{print "ok"}END{print "------"}' //后面沒有文件依然有輸出 3 [root@localhost ~]# awk 'BEGIN{print 3}{print "ok"}END{print "------"}' /etc/hosts 3 //行處理前 ok //逐行處理 ok //逐行處理 ------ //行處理后 [root@localhost ~]# awk 'BEGIN{FS=":"}{print $1}END{print "------"}' /etc/passwd //FS:字段分隔符 root bin daemon [root@localhost ~]# awk 'BEGIN{FS=":";OFS="---"}{print $1,$2}END{print "------"}' /etc/passwd // OFS:Out of Field Separator,輸出字段分隔符 root---x bin---x daemon---x

== awk命令格式

awk ‘pattern’ filename
實(shí)例:awk ‘/root/’ /etc/passwd //正則表達(dá)式

awk ‘{action}’ filename
實(shí)例:awk ‘{print $1}’ /etc/passwd //action模式
awk ‘pattern {action}’ filename

實(shí)例:awk ‘/root/{print $1}’ /etc/passwd
awk 'BEGIN{FS=":"} ‘/root/{print $1}’ /etc/passwd

command | awk ‘pattern {action}’
實(shí)例:df -P |grep ‘/’ |awk ‘$4>25000{print $4}’ //管道模式

[root@localhost ~]# awk '/root/' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# awk -F: '{print $1,$3}' /etc/passwd root 0 bin 1 //原理解讀:1、awk使用一行作為輸入,并將這一樣賦給內(nèi)部變量$0;2、然后行被``被分解成字段,每個(gè)字段存儲在已編號的變量中,從$1開始,最多可以到100個(gè)字段3、awk是如何知道用空格還是其他的分割符來分割字段呢?因?yàn)橛幸粋€(gè)內(nèi)部變量`FS`來確定字段分隔符。4、awk打印字段時(shí),將使用print函數(shù)打印。awk在打印字段之間加上空格。因?yàn)?span id="ozvdkddzhkzd" class="token variable">$1和$3之間有一個(gè)逗號。逗號比較特殊,他映射了另外一個(gè)內(nèi)部變量`OFS`,`OFS`默認(rèn)分隔符是空格。 [root@localhost ~]# awk '/root/{print $1}' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost ~]# awk 'BEGIN{FS=":"}/root/{print $1}' /etc/passwd root operator [root@localhost ~]# df -P 文件系統(tǒng) 1024-塊 已用 可用 配額 掛載點(diǎn) /dev/sda3 18555904 9297296 9258608 51% / devtmpfs 1917956 0 1917956 0% /dev tmpfs 1932652 0 1932652 0% /dev/shm tmpfs 1932652 9344 1923308 1% /run tmpfs 1932652 0 1932652 0% /sys/fs/cgroup /dev/sda1 303780 160340 143440 53% /boot tmpfs 386532 52 386480 1% /run/user/1000 tmpfs 386532 0 386532 0% /run/user/0 /dev/loop0 4414592 4414592 0 100% /mnt [root@localhost ~]# df -P |grep '/' |awk '$4>25000{print $4}' 9258608 1917956 1932652 1923308 1932652 143440 386480 386532 ``

總結(jié)

以上是生活随笔為你收集整理的awk入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。