真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Shell腳本正則表達(dá)式中awk、sort、uniq怎么用

這篇文章主要為大家展示了“Shell腳本正則表達(dá)式中awk、sort、uniq怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Shell腳本正則表達(dá)式中awk、sort、uniq怎么用”這篇文章吧。

創(chuàng)新互聯(lián)主營(yíng)麗江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開(kāi)發(fā),麗江h(huán)5微信小程序搭建,麗江網(wǎng)站營(yíng)銷(xiāo)推廣歡迎麗江等地區(qū)企業(yè)咨詢

awk工具

在Linux/UNIX系統(tǒng)中,awk是一個(gè)功能強(qiáng)大的編輯工具,逐行讀取輸入文本,并根據(jù)指定的匹配模式進(jìn)行查找,對(duì)符合條件的內(nèi)容進(jìn)行格式化輸出或者過(guò)濾處理,可以再無(wú)交互的情況下實(shí)現(xiàn)相當(dāng)復(fù)雜的文本操作,被廣泛應(yīng)用于Shell腳本,完成各種自動(dòng)化配置任務(wù)。

1.awk常見(jiàn)用法:
通常情況下 awk 所使用的命令格式如下所示,其中,單引號(hào)加上大括號(hào)“{}”用于設(shè)置對(duì)數(shù)據(jù)進(jìn)行的處理動(dòng)作。awk 可以直接處理目標(biāo)文件,也可以通過(guò)“-f”讀取腳本對(duì)目標(biāo)文件進(jìn)行處理。

Demo1:

查出/etc/passwd的用戶名等列,執(zhí)行如下命令

[root@localhost ~]# awk -F ':' '{print $1,$3,$4}' /etc/passwd
root 0 0
bin 1 1
daemon 2 2
//以下省略多行
awk 包含幾個(gè)特殊的內(nèi)建變量(可直接用)如下所示:
FS:指定每行文本的字段分隔符,默認(rèn)為空格或制表位。
NF:當(dāng)前處理的行的字段個(gè)數(shù)。
NR:當(dāng)前處理的行的行號(hào)(序數(shù))。
$0:當(dāng)前處理的行的整行內(nèi)容。
$n:當(dāng)前處理行的第 n 個(gè)字段(第 n 列)。
FILENAME:被處理的文件名。
RS:數(shù)據(jù)記錄分隔,默認(rèn)為\n,即每行為一條記錄。

按行輸出文本:

[root@localhost ~]# awk 'NR==1,NR==3{print}' /etc/passwd
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 ":" 'NR==1,NR==3{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2

[root@localhost ~]# awk -F ":" '(NR>=1)&&(NR<=3){print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
輸出所有奇偶行的內(nèi)容:
奇數(shù)行:
[root@localhost ~]# awk -F ":" 'NR%2==1{print $1,$3}' /etc/passwd
root 0
daemon 2
lp 4
shutdown 6
mail 8
games 12
nobody 99
dbus 81
abrt 173
rpc 32
saslauth 996
pulse 171
rpcuser 29
ntp 38
usbmuxd 113
qemu 107
setroubleshoot 993
gdm 42
sshd 74
postfix 89
zhou 1000
named 25
偶數(shù)行:
[root@localhost ~]# awk -F ":" 'NR%2==0{print $1,$3}' /etc/passwd
bin 1
adm 3
sync 5
halt 7
operator 11
ftp 14
systemd-network 192
polkitd 999
libstoragemgmt 998
colord 997
rtkit 172
chrony 995
nfsnobody 65534
tss 59
geoclue 994
radvd 75
sssd 992
gnome-initial-setup 991
avahi 70
tcpdump 72
dhcpd 177
輸出以root開(kāi)頭的行:
[root@localhost ~]# awk '/^root/{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
統(tǒng)計(jì)以/bin/bash結(jié)尾的行數(shù):
[root@localhost ~]# awk 'BEGIN {x=0} ; /\/bin\/bash$/{x++};END {print x}' /etc/passwd
2
統(tǒng)計(jì)以空行分隔的文本段落數(shù):
[root@localhost opt]# vim name.txt
zhangsan:lisi:wangwu
zhaoliu:liuliu
heiba:heihei
[root@localhost opt]# awk 'BEGIN{RS=":"};END{print NR}' /opt/name.txt
5
//統(tǒng)計(jì)規(guī)則:遇到關(guān)鍵符號(hào),折行
字段輸出:
[root@localhost opt]# awk -F ":" '$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@localhost opt]# awk -F ":" '$3=="0"{print $1,$7}' /etc/passwd
root /bin/bash

輸出密碼為空的用戶的shadow記錄:
[root@localhost opt]# awk 'BEGIN{FS=":"};$3=="0"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash

輸出以冒號(hào)分隔且第7個(gè)字段包含bash:
[root@localhost opt]# awk -F : '$7~"bash"{print}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhou:x:1000:1000:zhou:/home/zhou:/bin/bash

以冒號(hào)為分隔,輸出第一個(gè)字段包含nfs且總字段數(shù)為7的第1,3,7字段
方法一:[root@localhost opt]# awk -F : '($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin
方法二:[root@localhost opt]# awk 'BEGIN{FS=":"};($1~"nfs")&&(NF==7){print $1,$3,$7}' /etc/passwd
nfsnobody 65534 /sbin/nologin

以冒號(hào)為分隔,第七個(gè)字段不包含/sbin/nologin且總字段為7的,1,3,7字段
[root@localhost opt]# awk 'BEGIN{FS=":"};($7!="/sbin/nologin")&&(NF==7){print $1,$3,$7}' /etc/passwd
root 0 /bin/bash
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
zhou 1000 /bin/bash
named 25 /bin/false
調(diào)用wc -l 命令統(tǒng)計(jì)使用bash 的用戶個(gè)數(shù):
[root@localhost opt]# awk -F : '/bash$/{print | "wc -l"}' /etc/passwd
2
調(diào)用w 命令,并用來(lái)統(tǒng)計(jì)在線用戶數(shù):
[root@localhost opt]# awk 'BEGIN {while ("w" | getline) n++;{print n-2}}'
1
調(diào)用hostname,并輸出當(dāng)前的主機(jī)名:
[root@localhost opt]# awk 'BEGIN {"hostname" | getline ; print $0}'
localhost.localdomain

sort工具

在 Linux 系統(tǒng)中,常用的文件排序工具有三種:sort、uniq、wc, 其中sort 是一個(gè)以行為單位對(duì)文件內(nèi)容進(jìn)行排序的工具,也可以根據(jù)不同的數(shù)據(jù)類(lèi)型來(lái)排序。例如數(shù)據(jù)和字符的牌局就不一樣。sort 命令的語(yǔ)法為“sort [選項(xiàng)] 參數(shù)”,其中常用的選項(xiàng)包括以下幾種。

-f:忽略大小寫(xiě)

-b:忽略每行前面的空格

-M:按照月份進(jìn)行排序

-n:按照數(shù)字進(jìn)行排序

-r:反向排序

-u:等同于 uniq,表示相同的數(shù)據(jù)僅顯示一行

-t:指定分隔符,默認(rèn)使用[Tab]鍵分隔

-o <輸出文件>:將排序后的結(jié)果轉(zhuǎn)存至指定文件

-k:指定排序區(qū)域

uniq工具

Uniq 工具在 Linux 系統(tǒng)中通常與 sort 命令結(jié)合使用,用于報(bào)告或者忽略文件中的重復(fù)行。具體的命令語(yǔ)法格式為:uniq [選項(xiàng)] 參數(shù)。其中常用選項(xiàng)包括以下幾種。

-c:進(jìn)行計(jì)數(shù)

-d:僅顯示重復(fù)行

-u:僅顯示出現(xiàn)一次的行

以上是“Shell腳本正則表達(dá)式中awk、sort、uniq怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)題目:Shell腳本正則表達(dá)式中awk、sort、uniq怎么用
路徑分享:http://weahome.cn/article/jdcogo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部