2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

文本處理三劍客

 印度阿三17 2019-05-24

grep sed awk

sed是可以不打開文件進行增刪改查,vim的缺點是打開文件會把文件加載到我們的內存中,占用我們的內存,sed不會把文件加載到內存當中。

要先觀察格式

格式

sed 選項 sed命令 文件名

sed選項

-n 不輸出模式空間里的內容

-e 執(zhí)行多條sed命令

-r 使用拓展正則時用-r

-i 直接修改文件內容

sed命令

a 追加在指定行的下面

如何追加多行

sed ‘2i ok\nok1\nok3’ 文件名

c 取代指定行

d 刪除,可以支持多行,比如1,3就是第一行和第三行

刪除所有行

sed ‘d’ 文件名

i 插入在指定行的上面

p 輸出指定內容c

一般結合-n使用,sed ‘/root/p’ –n /etc/passwd

! 取反,放在命令前面

sed用法總結

1.查找指定的字符串

例子:顯示/etc/passwd中保含root的行(顯示模式空間中的內容)

方法1:sed '/root/p' /etc/passwd

方法2:cat /etc/passwd | sed '/root/p'

2.在指定的位置做增刪

例子:刪除以root為開頭的行

# sed '/^root/d' a.txt

例子:在包含root的行后添加一行 i am ken

# sed '/root/a i am ken' a.txt

3.按行替換

例子:將5到9行的內容替換為 i am ken

# sed '5,9c i am ken' a.txt

4.按照字符替換

例子:將/etc/selinux/config中的SELINUX=enforcing改成 disabled

寫法1:# sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' config

寫法2:# sed -r -i 's/(SELINUX=)disabled/\1enforcing/g' config

5.查找指定的內容再做替換

例子:將以r開頭的行中的oo替換為qq

# sed '/^r/{s/oo/qq/g}' passwd

6.多點編輯

例子:去除文件中的注釋行和空白行

# grep -v -E "(^#)|(^$)" passwd.bak >passwd

# cat passwd.bak | sed -e '/^#/d' -e '/^$/d' >passwd

7.取反操作

顯示非1-3行

# sed -n '1,3!p' passwd

awk不僅是系統(tǒng)命令,也是編程語言

格式

awk awk參數 ‘匹配的是什么東西{對這個東西做什么}’ file

常用參數只有一個 –F 指定分隔符

幾個小概念

記錄(record):一行就是一個記錄

分隔符(field separator):進行對記錄進行切割的時候所使用的字符

字段(field):將一條記錄分割成的每一段

FILENAME:當前處理文件的文件名

FS(Field Separator):字段分隔符(默認是以空格為分隔符=)

NR(Number of Rrecord):記錄的編號(awk每讀取一行,NR就加1==)

NF(Number of Field):字段數量(記錄了當前這條記錄包含多少個字段==)

1. 結合內置變量,打印指定的幾行,以及字段數量

例子;輸出有多余5個字段的行的第三個字段

# cat a.sh | awk -F ":" 'NF>=5{print $3}'

例子:輸出每行行號和該行有幾個字段

# cat a.sh | awk -F ":" '{print NR,NF}'

例子:輸出用戶名,要求所有用戶顯示在同一行,而且用空格分隔

# cat mypwd | awk 'BEGIN{FS=":"; ORS=" "}{print $1}'

2. 結合正則來匹配一行或者某個字段

例子:輸出用戶名以s為開頭的用戶的uid

# cat mypwd | awk -F ":" '/^s/{print $}'

例子:輸出第五個字段是以t為結尾的用戶的姓名

# cat mypwd | awk -F ":" '$5~/t$/{print $1}'

3. 采用比較符號來進行打印指定的某些行

例子:實現僅僅輸出3-5的內容,每行前面添加一個行號

# cat mypwd | awk 'NR>=3&&NR<=5{print NR,$1}'

# cat mypwd | awk 'NR==3,NR==5{print NR,$1}'

例子:實現僅僅輸出3 和 5 和 7行的內容,每行前面添加一個行號

# cat mypwd | awk 'NR==3||NR==5||NR==7{print NR,$1}'

4. END

例子:統(tǒng)計mypwd中以#開頭的行有多少行

# cat mypwd | awk 'BEGIN{n=0}/^#/{n =1}END{print n}'

統(tǒng)計:mypwd中,以:為分隔符,字段數量在3-5的行的數目

# cat mypwd  | awk 'BEGIN{FS=":"}NF>=3&&NF<=5{n =1}END{print n}'

5. ip

例子:統(tǒng)計IP

[root@ken]# cat url.txt | awk -F "/ " '{urls[$2] }END{for(key in urls)print key, urls[key]}’

www.baidu.com 12

haha.baidu.com 1

ftp.baidu.com 6

mail.baidu.com 7

來源:http://www./content-4-204601.html

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多