Day 19 正則與取出ip地址

Day 19 正則與取出ip地址

第1章 例題

1.1 第三行的inet替換爲oldboy

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p|sed 's#inet#oldboy#g'

(ip a s eth0 |sed -n '3s#inet#oldboy#gp'由上條命令合併)

    oldboy 10.0.0.200/24 brd 10.0.0.255 scope global eth0

 

1.2 取出stat /etc/hosts 文件權限644  0644

[root@uegame ~]# stat /etc/hosts|sed -n '4p'|sed -r 's#^.*\(0(.*)/-.*$#\1#g'    方法一

644

[root@uegame ~]# stat /etc/hosts|sed -nr '4s#^.* \((.*)/-.*$#\1#gp'             方法二

0644

[root@uegame ~]# stat /etc/hosts|awk 'NR==4'|awk -F '[(/]+' '{print $2}'        方法三

0644

[root@uegame ~]# stat /etc/hosts|awk -F '[(/]+' 'NR==4{print $2}'               方法四

0644

[root@uegame ~]# stat -c%a /etc/hosts

644

 

1.3 已知/oldboy/ett.txt文件內容爲

Oldboy

Olldboooy

Test

grep/egrep過濾出前兩行

[root@uegame /oldboy]# grep '^o' ett.txt

       oldboy

       olldboooy

       [root@uegame /oldboy]# sed -n '1,2p' ett.txt

       oldboy

       olldboooy

       [root@uegame /oldboy]# awk 'NR==1,NR==2' ett.txt

       oldboy

       olldboooy

[root@uegame /oldboy]# egrep 'ol+dbo+y' ett.txt

       oldboy

       olldboooy

       sed方法

       [root@uegame /oldboy]# sed -nr  '/ol+dbo+y/p' ett.txt

       oldboy

       olldboooy

       awk方法

       [root@uegame /oldboy]# awk  '/ol+dbo+y/' ett.txt

       oldboy

       olldboooy

 

1.4 三劍客進行過濾空行

創建test.txt 內容如下:排除空行

cat /oldboy/test.txt

oldboy

 

xizi

 

xiaochao

 

[root@uegame /oldboy]# sed '/^$/d' test.txt

oldboy

xizi

xiaochao

!取反,不顯示

[root@uegame /oldboy]# sed -n '/^$/!p' test.txt

oldboy

xizi

xiaochao

[root@uegame /oldboy]# awk '!/^$/' test.txt

oldboy

xizi

xiaochao

[root@uegame /oldboy]# grep '.' test.txt

oldboy

xizi

xiaochao

[root@uegame /oldboy]# grep -v '^$' test.txt

oldboy

xizi

xiaochao

[root@uegame /oldboy]# grep '[a-z]' test.txt

oldboy

xizi

xiaochao

 

1.5 三劍客關於過濾功能的區別

grep       過濾             顯示執行的過程(-o 加上顏色

sed         過濾             替換      修改文件內容    取行

awk    過濾             取列      (指定分隔符-F 計算  統計

1.6 取出ifconfigIP地址

[root@oldboyedu50-lnb ~]# ifconfig eth0    先查看內容

eth0      Link encap:Ethernet  HWaddr 00:0C:29:59:D4:13 

          inet addr:10.0.0.200  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe59:d413/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:50928 errors:0 dropped:0 overruns:0 frame:0

          TX packets:25105 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:60628583 (57.8 MiB)  TX bytes:11673902 (11.1 MiB)

1.6.1 方法一 awk

awk '條件{動作}'

條件  NR==3   NR>=3 找出哪一行

動作  命令 print

[root@oldboyedu50-lnb ~]# ifconfig eth0 |awk 'NR==2{print $2}'   NR==2和{}一起使用 簡化命令

[root@oldboyedu50-lnb ~]# ifconfig eth0 |awk -F'[: ]+' 'NR==2{print $4}'  執行 取出

10.0.0.200

1.6.2 方法二 sed 反向引用

[root@oldboyedu-50 oldboy]# ifconfig eth0|sed -n 2p|sed -r 's#^.*r:(.*)  B.*$#\1#g'

反向引用就是將需要的內容用()保護起來 最後輸出

10.0.0.200

[root@oldboyedu-50 oldboy]# ifconfig eth0|sed -nr '2s#^.*r:(.*)  B.*$#\1#gp'

簡化 將sed -n 2p加到後面的內容中

10.0.0.200

1.6.3 方法三 sed 替換

sed命令,將不需要顯示的,逐步替換

[root@oldboyedu50-lnb ~]# ifconfig eth0|sed -n '2p'|sed 's#^.*dr:##g'|sed 's# .*$##g'

10.0.0.200

1.6.4 方法四 sed [^0-9.]

使用[^ ]0-9.之外的替換成空格,再使用awk取出第一列

[root@znix ~]# ifconfig eth0|sed -n '2s#[^0-9.]# #gp'|awk '{print $1}'

10.0.0.200

1.7 取出ip a s eth0IP地址

ifconfig和取ip a s eth0的方法是互通的

1.7.1 方法一 awk

[root@oldboyedu50-lnb ~]# ip a s eth0 |awk   -F'[ /]+'  'NR==3{print $3}'

10.0.0.200

1.7.2 方法二 sed |(或者)

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p

把ip地址前面的內容替換掉

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p |sed 's#^.*t ##g'

10.0.0.200/24 brd 10.0.0.255 scope global eth0

把ip地址之後的替換掉

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p |sed 's#^.*t ##g'|sed 's#/.*$##g'

10.0.0.200

逐步優化 使用2個sed

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p |sed -r 's#^.*t |/.*$##g'

10.0.0.200

[root@oldboyedu50-lnb ~]# ip a s eth0 | sed -nr '3s#^.*t |/.*$##gp'

10.0.0.200

最簡化版

1.7.3 方法三 sed 後向引用

sed -n 3p |sed -r 's#^.*t (.*)/.*$#\1#g'

可以簡化爲

sed -nr 's#^.*t (.*)/.*$#\1#gp'

在前面先保護(你想要的內容),在後面通過\數字使用

第三行的inet替換爲oldboy

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p|sed 's#inet#oldboy#g'

    oldboy 10.0.0.200/24 brd 10.0.0.255 scope global eth0

ip a s eth0 |sed -n 3p|sed 's#inet#oldboy#g'

#第三行的inet替換爲oldboy

ip a s eth0 |sed -n '3s#inet#oldboy#gp'

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p          先確認取出的行

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

[root@oldboyedu50-lnb ~]# ip a s eth0 |sed -n 3p |sed -r 's#^.*t (.*)/.*$#\1#g' 

最簡短

10.0.0.200

1.7.4 方法四 egrep(瞭解)

只通過正則表達式取出ip

[root@oldboyedu50-lnb ~]# ip a s eth0 |egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

[root@oldboyedu50-lnb ~]# ip a s eth0 |egrep '([0-9]{1,3}\.){3}[0-9]{1,3}'

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

[root@oldboyedu50-lnb ~]# ip a s eth0 |egrep '([0-9]{1,3}\.?){4}'

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0

 

第2章 目錄的硬鏈接數量

2.1 etc目錄的硬鏈接數是?

創建一個ett   ett硬鏈接數爲2(本身是一個硬鏈接,點)

    mkdir -p /oldboy/ett

    [root@uegame /oldboy]# ll -d ett

    drwxr-xr-x 2 root root 4096 May 21 14:48 ett

[root@uegame /oldboy]# ll -di ett ett/.

523284 drwxr-xr-x 2 root root 4096 May 21 14:48 ett

523284 drwxr-xr-x 2 root root 4096 May 21 14:48 ett/.

       再創建一個目錄,

    [root@uegame /oldboy]# mkdir -p /oldboy/ett/oldboy

       ett的硬鏈接數會變爲3(本身是一個硬鏈接,點,當前目錄下的上一級目錄)

    [root@uegame /oldboy]# ll -d ett

    drwxr-xr-x 3 root root 4096 May 21 14:51 ett

 

blob.png

 

第3章 顯示日期

date 日期

-d 根據你的描述顯示指定的日期

d  '-7day'  七天之前

d  '+7day'  七天之後

3.1 顯示日期

 [root@uegame /oldboy]# date

Mon May 21 15:31:08 CST 2018

顯示7天之前的日期

[root@uegame /oldboy]# date -d '-7day' +%F_%w

 


 

3.2 總結

1.      正則表達式與取出ip地址

2.      三劍客過濾與區別

3.      目錄的硬鏈接數

4.      顯示日期


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章