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

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

shell腳本中文本處理工具的介紹和使用-創(chuàng)新互聯(lián)

這篇文章為大家?guī)碛嘘P(guān)shell腳本中文本處理工具使用的詳細(xì)介紹。大部分工具可能大家會經(jīng)常用到,為此分享給大家做個詳細(xì)的總結(jié),希望你們能深刻了解shell文本處理工具的用法。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供平陽企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都做網(wǎng)站、H5網(wǎng)站設(shè)計、小程序制作等業(yè)務(wù)。10年已為平陽眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

1. grep工具

grep是行過濾工具;用于根據(jù)關(guān)鍵字進(jìn)行行過濾

語法和選項(xiàng)

語法:

# grep [選項(xiàng)] '關(guān)鍵字' 文件名

常見選項(xiàng):

OPTIONS:
   -i: 不區(qū)分大小寫
   -v: 查找不包含指定內(nèi)容的行,反向選擇
   -w: 按單詞搜索
   -o: 打印匹配關(guān)鍵字
   -c: 統(tǒng)計匹配到的行數(shù)
   -n: 顯示行號
   -r: 逐層遍歷目錄查找
   -A: 顯示匹配行及后面多少行 
   -B: 顯示匹配行及前面多少行
   -C: 顯示匹配行前后多少行
   -l:只列出匹配的文件名
   -L:列出不匹配的文件名
   -e: 使用正則匹配
   -E:使用擴(kuò)展正則匹配
   ^key:以關(guān)鍵字開頭
   key$:以關(guān)鍵字結(jié)尾
   ^$:匹配空行
   --color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示

顏色顯示(別名設(shè)置):

臨時設(shè)置:
# alias grep='grep --color=auto'       //只針對當(dāng)前終端和當(dāng)前用戶生效

永久設(shè)置:
1)全局(針對所有用戶生效)
vim /etc/bashrc
alias grep='grep --color=auto'
source /etc/bashrc

2)局部(針對具體的某個用戶)
vim ~/.bashrc
alias grep='grep --color=auto'
source ~/.bashrc

舉例說明:

==說明:不要直接使用/etc/passwd文件,將其拷貝到/tmp下做實(shí)驗(yàn)!==

# grep -i root passwd            忽略大小寫匹配包含root的行
# grep -w ftp passwd             精確匹配ftp單詞
# grep -w hello passwd            精確匹配hello單詞;自己添加包含hello的行到文件
# grep -wo ftp passwd            打印匹配到的關(guān)鍵字ftp
# grep -n root passwd            打印匹配到root關(guān)鍵字的行好
# grep -ni root passwd            忽略大小寫匹配統(tǒng)計包含關(guān)鍵字root的行
# grep -nic root passwd           忽略大小寫匹配統(tǒng)計包含關(guān)鍵字root的行數(shù)
# grep -i ^root passwd            忽略大小寫匹配以root開頭的行
# grep bash$ passwd               匹配以bash結(jié)尾的行
# grep -n ^$ passwd               匹配空行并打印行號
# grep ^# /etc/vsftpd/vsftpd.conf    匹配以#號開頭的行
# grep -v ^# /etc/vsftpd/vsftpd.conf   匹配不以#號開頭的行
# grep -A 5 mail passwd           匹配包含mail關(guān)鍵字及其后5行
# grep -B 5 mail passwd           匹配包含mail關(guān)鍵字及其前5行
# grep -C 5 mail passwd           匹配包含mail關(guān)鍵字及其前后5行

2. cut工具

cut是列截取工具,用于列的截取

語法和選項(xiàng)

語法:

# cut 選項(xiàng)  文件名

常見選項(xiàng):

-c: 以字符為單位進(jìn)行分割,截取
-d: 自定義分隔符,默認(rèn)為制表符\t
-f: 與-d一起使用,指定截取哪個區(qū)域

舉例說明:

# cut -d: -f1 1.txt       以:冒號分割,截取第1列內(nèi)容
# cut -d: -f1,6,7 1.txt   以:冒號分割,截取第1,6,7列內(nèi)容
# cut -c4 1.txt         截取文件中每行第4個字符
# cut -c1-4 1.txt      截取文件中每行的1-4個字符
# cut -c4-10 1.txt      截取文件中每行的4-10個字符
# cut -c5- 1.txt         從第5個字符開始截取后面所有字符

3. sort工具

sort工具用于排序;它將文件的每一行作為一個單位,從首字符向后,依次按ASCII碼值進(jìn)行比較,最后將他們按升序輸出。

語法和選項(xiàng)
-u :去除重復(fù)行
-r :降序排列,默認(rèn)是升序
-o : 將排序結(jié)果輸出到文件中,類似重定向符號>
-n :以數(shù)字排序,默認(rèn)是按字符排序
-t :分隔符
-k :第N列
-b :忽略前導(dǎo)空格。
-R :隨機(jī)排序,每次運(yùn)行的結(jié)果均不同

舉例說明

# sort -n -t: -k3 1.txt       按照用戶的uid進(jìn)行升序排列
# sort -nr -t: -k3 1.txt       按照用戶的uid進(jìn)行降序排列
# sort -n 2.txt             按照數(shù)字排序
# sort -nu 2.txt             按照數(shù)字排序并且去重
# sort -nr 2.txt 
# sort -nru 2.txt 
# sort -nru 2.txt 
# sort -n 2.txt -o 3.txt       按照數(shù)字排序并將結(jié)果重定向到文件
# sort -R 2.txt 
# sort -u 2.txt

4.uniq工具

uniq用于去除==連續(xù)==的==重復(fù)==行

常見選項(xiàng):
-i: 忽略大小寫
-c: 統(tǒng)計重復(fù)行次數(shù)
-d:只顯示重復(fù)行

舉例說明:
# uniq 2.txt 
# uniq -d 2.txt 
# uniq -dc 2.txt

5.tee工具

tee工具是從標(biāo)準(zhǔn)輸入讀取并寫入到標(biāo)準(zhǔn)輸出和文件,即:雙向覆蓋重定向(屏幕輸出|文本輸入)

選項(xiàng):
-a 雙向追加重定向

# echo hello world
# echo hello world|tee file1
# cat file1 
# echo 999|tee -a file1
# cat file1

6.diff工具

diff工具用于逐行比較文件的不同

注意:diff描述兩個文件不同的方式是告訴我們==怎樣改變第一個==文件之后==與第二個文件匹配==。

語法和選項(xiàng)

語法:

diff [選項(xiàng)] 文件1 文件2

常用選項(xiàng):

選項(xiàng)含義備注
-b不檢查空格
-B不檢查空白行
-i不檢查大小寫
-w忽略所有的空格
--normal正常格式顯示(默認(rèn))
-c上下文格式顯示
-u合并格式顯示

舉例說明:

  • 比較兩個==普通文件==異同,文件準(zhǔn)備:
[root@MissHou ~]# cat file1
aaaa
111
hello world
222
333
bbb
[root@MissHou ~]#
[root@MissHou ~]# cat file2
aaa
hello
111
222
bbb
333
world

1)正常顯示

diff目的:file1如何改變才能和file2匹配
[root@MissHou ~]# diff file1 file2
1c1,2          第一個文件的第1行需要改變(c=change)才能和第二個文件的第1到2行匹配     
< aaaa        小于號"<"表示左邊文件(file1)文件內(nèi)容
---         ---表示分隔符
> aaa          大于號">"表示右邊文件(file2)文件內(nèi)容
> hello
3d3         第一個文件的第3行刪除(d=delete)后才能和第二個文件的第3行匹配
< hello world
5d4         第一個文件的第5行刪除后才能和第二個文件的第4行匹配
< 333
6a6,7          第一個文件的第6行增加(a=add)內(nèi)容后才能和第二個文件的第6到7行匹配
> 333          需要增加的內(nèi)容在第二個文件里是333和world
> world

2)上下文格式顯示

[root@MissHou ~]# diff -c file1 file2
前兩行主要列出需要比較的文件名和文件的時間戳;文件名前面的符號***表示file1,---表示file2
*** file1    2019-04-16 16:26:05.748650262 +0800
--- file2    2019-04-16 16:26:30.470646030 +0800
*************** 我是分隔符
*** 1,6 ****     以***開頭表示file1文件,1,6表示1到6行
! aaaa        !表示該行需要修改才與第二個文件匹配
  111
- hello world    -表示需要刪除該行才與第二個文件匹配
  222
- 333          -表示需要刪除該行才與第二個文件匹配
  bbb
--- 1,7 ----     以---開頭表示file2文件,1,7表示1到7行
! aaa          表示第一個文件需要修改才與第二個文件匹配
! hello       表示第一個文件需要修改才與第二個文件匹配
  111
  222
  bbb
+ 333          表示第一個文件需要加上該行才與第二個文件匹配
+ world       表示第一個文件需要加上該行才與第二個文件匹配

3)合并格式顯示

[root@MissHou ~]# diff -u file1 file2
前兩行主要列出需要比較的文件名和文件的時間戳;文件名前面的符號---表示file1,+++表示file2
--- file1    2019-04-16 16:26:05.748650262 +0800
+++ file2    2019-04-16 16:26:30.470646030 +0800
@@ -1,6 +1,7 @@
-aaaa
+aaa
+hello
 111
-hello world
 222
-333
 bbb
+333
+world
  • 比較兩個==目錄不同==
默認(rèn)情況下也會比較兩個目錄里相同文件的內(nèi)容
[root@MissHou  tmp]# diff dir1 dir2
diff dir1/file1 dir2/file1
0a1
> hello
Only in dir1: file3
Only in dir2: test1
如果只需要比較兩個目錄里文件的不同,不需要進(jìn)一步比較文件內(nèi)容,需要加-q選項(xiàng)
[root@MissHou  tmp]# diff -q dir1 dir2
Files dir1/file1 and dir2/file1 differ
Only in dir1: file3
Only in dir2: test1

其他小技巧:

有時候我們需要以一個文件為標(biāo)準(zhǔn),去修改其他文件,并且修改的地方較多時,我們可以通過打補(bǔ)丁的方式完成。

1)先找出文件不同,然后輸出到一個文件
[root@MissHou ~]# diff -uN file1 file2 > file.patch
-u:上下文模式
-N:將不存在的文件當(dāng)作空文件
2)將不同內(nèi)容打補(bǔ)丁到文件
[root@MissHou ~]# patch file1 file.patch
patching file file1
3)測試驗(yàn)證
[root@MissHou ~]# diff file1 file2
[root@MissHou ~]#

7. paste工具

paste工具用于合并文件行

常用選項(xiàng):
-d:自定義間隔符,默認(rèn)是tab
-s:串行處理,非并行

##8. tr工具

tr用于字符轉(zhuǎn)換,替換和刪除;主要用于==刪除文件中控制字符==或進(jìn)行==字符轉(zhuǎn)換==

語法和選項(xiàng)

語法:

用法1:命令的執(zhí)行結(jié)果交給tr處理,其中string1用于查詢,string2用于轉(zhuǎn)換處理
# commands|tr  'string1'  'string2'
用法2:tr處理的內(nèi)容來自文件,記住要使用"<"標(biāo)準(zhǔn)輸入
# tr  'string1'  'string2' < filename

用法3:匹配string1進(jìn)行相應(yīng)操作,如刪除操作
# tr options 'string1' < filename

常用選項(xiàng):

-d 刪除字符串1中所有輸入字符。
-s 刪除所有重復(fù)出現(xiàn)字符序列,只保留第一個;即將重復(fù)出現(xiàn)字符串壓縮為一個字符串

常匹配字符串:

字符串含義備注
==a-z==或[:lower:]匹配所有小寫字母[a-zA-Z0-9]
==A-Z==或[:upper:]匹配所有大寫字母
==0-9==或[:digit:]匹配所有數(shù)字
[:alnum:]匹配所有字母和數(shù)字
[:alpha:]匹配所有字母
[:blank:]所有水平空白
[:punct:]匹配所有標(biāo)點(diǎn)符號
[:space:]所有水平或垂直的空格
[:cntrl:]所有控制字符\f Ctrl-L     走行換頁
\n Ctrl-J   換行

\r Ctrl-M     回車
\t Ctrl-I  tab鍵 |

舉例說明:

[root@MissHou  shell01]# cat 3.txt  自己創(chuàng)建該文件用于測試
ROOT:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
boss02:x:516:511::/home/boss02:/bin/bash
vip:x:517:517::/home/vip:/bin/bash
stu1:x:518:518::/home/stu1:/bin/bash
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
aaaaaaaaaaaaaaaaaaaa
bbbbbb111111122222222222233333333cccccccc
hello world 888
666
777
999

# tr -d '[:/]' < 3.txt        刪除文件中的:和/
# cat 3.txt |tr -d '[:/]'      刪除文件中的:和/
# tr '[0-9]' '@' < 3.txt       將文件中的數(shù)字替換為@符號
# tr '[a-z]' '[A-Z]' < 3.txt     將文件中的小寫字母替換成大寫字母
# tr -s '[a-z]' < 3.txt       匹配小寫字母并將重復(fù)的壓縮為一個
# tr -s '[a-z0-9]' < 3.txt    匹配小寫字母和數(shù)字并將重復(fù)的壓縮為一個
# tr -d '[:digit:]' < 3.txt     刪除文件中的數(shù)字
# tr -d '[:blank:]' < 3.txt     刪除水平空白
# tr -d '[:space:]' < 3.txt     刪除所有水平和垂直空白
小試牛刀
  1. 使用小工具分別截取當(dāng)前主機(jī)IP;截取NETMASK;截取廣播地址;截取MAC地址
# ifconfig eth0|grep 'Bcast'|tr -d '[a-zA-Z ]'|cut -d: -f2,3,4
10.1.1.1:10.1.1.255:255.255.255.0
# ifconfig eth0|grep 'Bcast'|tr -d '[a-zA-Z ]'|cut -d: -f2,3,4|tr ':' '\n'
10.1.1.1
10.1.1.255
255.255.255.0
# ifconfig eth0|grep 'HWaddr'|cut -d: -f2-|cut -d' ' -f4
00:0C:29:25:AE:54
# ifconfig eth0|grep 'HW'|tr -s ' '|cut -d' ' -f5
00:0C:29:B4:9E:4E

# ifconfig eth2|grep Bcast|cut -d: -f2|cut -d' ' -f1
# ifconfig eth2|grep Bcast|cut -d: -f2|tr -d '[ a-zA-Z]'
# ifconfig eth2|grep Bcast|tr -d '[:a-zA-Z]'|tr ' ' '@'|tr -s '@'|tr '@' '\n'|grep -v ^$
# ifconfig eth0|grep 'Bcast'|tr -d [:alpha:]|tr '[ :]' '\n'|grep -v ^$
# ifconfig eth2|grep HWaddr|cut -d ' ' -f11
# ifconfig eth0|grep HWaddr|tr -s ' '|cut -d' ' -f5
# ifconfig eth2|grep HWaddr|tr -s ' '|cut -d' ' -f5
# ifconfig eth0|grep 'Bcast'|tr -d 'a-zA-Z:'|tr ' ' '\n'|grep -v '^$'
  1. 將系統(tǒng)中所有普通用戶的用戶名、密碼和默認(rèn)shell保存到一個文件中,要求用戶名密碼和默認(rèn)shell之間用tab鍵分割
# grep 'bash$' passwd |grep -v 'root'|cut -d: -f1,2,7|tr ':' '\t' |tee abc.txt

以上就是shell腳本中文本處理工具的介紹和使用,工具的詳細(xì)使用情況還得要大家自己使用過才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前標(biāo)題:shell腳本中文本處理工具的介紹和使用-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/cciped.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部