Shell命令-文件及內容處理之wc,tr

文件及內容處理 - wc、tr

1. wc:統計文件的行數、單詞數或字節數

wc命令的功能說明

wc 命令用於計算字數。利用 wc 指令我們可以計算文件的字節數,字數,或是列數,若不指定文件名稱,或是所給予的文件名爲 “ - ”,則 wc 指令會從標準輸入設備讀取數據。

wc命令的語法格式

wc [OPTION]... [FILE]...
wc [-clw] [ - help] [ - version] [文件...]

wc命令的選項說明

wc 選項用的不多,表1爲 wc 命令的參數及說明,

表1: wc命令的參數及說明

參數選項 解釋說明
-c或--bytes或--chars 只顯示Bytes數。
-l或--lines 只顯示行數。
-w或--words 只顯示字數。
--help 在線幫助。
--version 顯示版本信息。

wc命令的實踐操作

範例1: 在默認的情況下,wc 將計算指定文件的行數,字數,以及字節數使用的命令爲:

--------------------------------------------------------------
==>命令如下<==
--------------------------------------------------------------
wc testfile

--------------------------------------------------------------
==>查看testfile的文件的內容<==
--------------------------------------------------------------
[root@nfs01 /data]# cat testfile
Linux網絡變得越來越普遍,但是精簡往往被忽視了  
問題。不幸的是,在今天的環境中,所有網絡都是潛在的***目標,  
從祕密軍事研究網絡到小型家庭局域網。  
Linux Network Securty專注於在網絡環境中保護Linux,其中  
需要考慮整個網絡的安全性而不僅僅是孤立的機器。  
它使用理論和實踐技術的組合來教授管理員如何安裝和  
使用安全應用程序,以及應用程序如何工作以及它們爲什麼是必要的。

--------------------------------------------------------------
==>使用wc統計,結果如下<==
--------------------------------------------------------------
[root@nfs01 /data]# wc testfile
  7   9 530 testfile

其中,3個數字分別表示 testfile 文件的行數,單詞數,以及該文件的字節數。如果想同時統計多個文件的信息,例如同時統計 testfile 的,testfile_1testfile_2,可使用如下命令:

--------------------------------------------------------------
==>統計三個文件的信息 <==
--------------------------------------------------------------
wc testfile testfile_1 testfile_2

--------------------------------------------------------------
==>輸出結果如下<==
--------------------------------------------------------------
wc testfile testfile_1 testfile_2#統計三個文件的信息  
3 92 598 testfile#第一個文件行數爲3,單詞數92,字節數598  
9 18 78 testfile_1#第二個文件的行數爲9,單詞數18,字節數78  
3 6 32 testfile_2#第三個文件的行數爲3,單詞數6,字節數32  
15 116 708總用量#三個文件總共的行數爲15,單詞數116,字節數708

範例2: 查看 /etc/passwd 有多少用戶

--------------------------------------------------------------
==>命令如下<==
--------------------------------------------------------------
cat /etc/passwd
cat /etc/passwd|wc -l
cat /etc/passwd|wc -L

--------------------------------------------------------------
==>源文件內容<==
--------------------------------------------------------------
root@nfs01 ~]# cat /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
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy:x:1000:1000::/home/oldboy:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin

--------------------------------------------------------------
==>統計行數<==
--------------------------------------------------------------
[root@nfs01 ~]# cat /etc/passwd|wc -l
22

--------------------------------------------------------------
==>統計最長<==
--------------------------------------------------------------
[root@nfs01 ~]# cat /etc/passwd|wc -L
99

2. tr:替換或刪除字符

tr命令的功能說明

tr命令從標準輸入中替換、縮減或者刪除字符、並將結果寫到標準輸出,Linux裏嚴格區分大小寫。所有字符都儘量加雙引號。

tr命令的語法格式

tr [-cdst] [ - help] [ - version] [第一字符集] [第二字符集]
tr [選項] ... SET1 [SET2]

tr命令的選項說明

tr 選項用的不多,表1爲 tr 命令的參數及說明,表2爲tr 字符集合的範圍說明

表1: tr 命令的參數及說明

參數選項 解釋說明
-c,--complement 反選設定字符。也就是符合SET1的部份不做處理,不符合的剩餘部份才進行轉換
-d, - delete 刪除指令字符
-s, - squeeze-repeats 縮減連續重複的字符成指定的單個字符
-t, - struncate-set1 削減SET1指定範圍,使之與SET2設定長度相等
--help 顯示程序用法信息
--version 顯示程序本身的版本信息

表2: tr 字符集合的範圍說明

參數選項 解釋說明
\ NNN 八進制值的字符NNN(1到3爲八進制值的字符)
\|反斜槓
\ a Ctrl-G鈴聲
\ b Ctrl-H退格符
\ f Ctrl-L走行換頁
\ n Ctrl-J新行
\ r \ n Ctrl-M回車
\ t Ctrl-I tab鍵
\ v Ctrl-X水平製表符
CHAR1-CHAR2 字符範圍從CHAR1到CHAR2的指定,範圍的指定以ASCII碼的次序爲基礎,只能由小到大,不能由大到小。
[CHAR *] 這是SET2專用的設定,功能是重複指定的字符到與SET1相同長度爲止
[CHAR * REPEAT] 這也是SET2專用的設定,功能是重複指定的字符到設定的REPEAT次數爲止(REPEAT的數字採8進位制計算,以0爲開始)
[:alnum:] 所有字母字符與數字
[:alpha:] 所有字母字符
[:blank:] 所有水平空格
[:cntrl:] 所有控制字符
[:digit:] 所有數字
[:graph:] 所有可打印的字符(不包含空格符)
[:lower:] 所有小寫字母
[:print:] 所有可打印的字符(包含空格符)
[:punct:] 所有標點字符
[:space:] 所有水平與垂直空格符
[:upper:] 所有大寫字母
[:xdigit:] 所有16進位制的數字
[= CHAR =] 所有符合指定的字符(等號裏的CHAR,代表你可自訂的字符)

tr命令的實踐操作

實踐文本如下:

--------------------------------------------------------------
==>命令如下<==
--------------------------------------------------------------
cat oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448

not 4900000448
my god ,i am not oldbey,but OLDBOY!

--------------------------------------------------------------
==>演示如下<==
--------------------------------------------------------------
[root@oldboyedu  ~]# cat oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448

not 4900000448
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu  ~]#

範例1: 將文件中出現的 abc替換爲 xyz

[root@oldboyedu  ~]# tr 'abc' 'xyz' < oldboy.txt     
                            #tr命令接文件比較特殊,需要輸入重定向符號“<”             
I xm oldyoy texzher!
I texzh linux.

I like yxdminton yxll,yillixrd yxll xnd zhinese zhess!
my ylog is http://oldyoy.ylog.51zto.zom
our site is http://www.etixntixn.org
my qq num is 49000448

not 4900000448
my god ,i xm not oldyey,yut OLDBOY!
[root@oldboyedu  ~]#

說明:凡是在文本中出現的a轉換爲xb換換爲yc轉換爲z,而不是僅僅將字符串abc替換爲字符串xyz

範例2: 使用 tr 命令 統一字母大小寫。

[root@oldboyedu  ~]# tr '[a-z]' '[A-Z]' <oldboy.txt
I AM OLDBOY TEACHER!
I TEACH LINUX.

I LIKE BADMINTON BALL,BILLIARD BALL AND CHINESE CHESS!
MY BLOG IS HTTP://OLDBOY.BLOG.51CTO.COM
OUR SITE IS HTTP://WWW.ETIANTIAN.ORG
MY QQ NUM IS 49000448

NOT 4900000448
MY GOD ,I AM NOT OLDBEY,BUT OLDBOY!
[root@oldboyedu  ~]#

範例3: 將數字 0-9替換爲a-j。(也是一一對應)

[root@oldboyedu  ~]# tr '[0-9]' '[a-j]' <oldboy.txt
I am oldboy teacher!
I teach linux.

I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.fbcto.com
our site is http://www.etiantian.org
my qq num is ejaaaeei

not ejaaaaaeei
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu  ~]#

範例4: 刪除文件中出現oldboy中的每個字符。

[root@oldboyedu  ~]# tr -d 'oldboy' <oldboy.txt
I am  teacher!
I teach inux.

I ike amintn a,iiar a an chinese chess!
m g is http://.g.51ct.cm
ur site is http://www.etiantian.rg
m qq num is 49000448

nt 4900000448
m g ,i am nt e,ut OLDBOY!
[root@oldboyedu  ~]#

說明:凡是在文件中出現的oldby字符都會被刪除,而不是僅僅刪除 oldboy 字符串。

今天就寫到這裏,有什麼疑問或出現什麼錯誤,隨時歡迎大神們發表評論指點迷津

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