文件及內容處理 - 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_1
,testfile_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
轉換爲x
,b
換換爲y
,c
轉換爲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 ~]#
說明:凡是在文件中出現的
o
,l
,d
,b
,y
字符都會被刪除,而不是僅僅刪除oldboy
字符串。今天就寫到這裏,有什麼疑問或出現什麼錯誤,隨時歡迎大神們發表評論指點迷津