Shell命令-文件及内容处理之wc,tr
Posted wjclinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的文件的内容<==
--------------------------------------------------------------
[[email protected] /data]# cat testfile
Linux网络变得越来越普遍,但是精简往往被忽视了
问题。不幸的是,在今天的环境中,所有网络都是潜在的黑客目标,
从秘密军事研究网络到小型家庭局域网。
Linux Network Securty专注于在网络环境中保护Linux,其中
需要考虑整个网络的安全性而不仅仅是孤立的机器。
它使用理论和实践技术的组合来教授管理员如何安装和
使用安全应用程序,以及应用程序如何工作以及它们为什么是必要的。
--------------------------------------------------------------
==>使用wc统计,结果如下<==
--------------------------------------------------------------
[[email protected] /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
--------------------------------------------------------------
==>源文件内容<==
--------------------------------------------------------------
[email protected] ~]# 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
--------------------------------------------------------------
==>统计行数<==
--------------------------------------------------------------
[[email protected] ~]# cat /etc/passwd|wc -l
22
--------------------------------------------------------------
==>统计最长<==
--------------------------------------------------------------
[[email protected] ~]# 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 |
?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!
--------------------------------------------------------------
==>演示如下<==
--------------------------------------------------------------
[[email protected] ~]# 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!
[[email protected] ~]#
范例1: 将文件中出现的
abc
替换为xyz
。
[[email protected] ~]# 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!
[[email protected] ~]#
说明:凡是在文本中出现的
a
转换为x
,b
换换为y
,c
转换为z
,而不是仅仅将字符串abc
替换为字符串xyz
范例2: 使用
tr
命令统一
字母大小写。
[[email protected] ~]# 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!
[[email protected] ~]#
范例3: 将数字
0-9
替换为a-j
。(也是一一对应)
[[email protected] ~]# 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!
[[email protected] ~]#
范例4: 删除文件中出现
oldboy
中的每个字符。
[[email protected] ~]# 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!
[[email protected] ~]#
说明:凡是在文件中出现的
o
,l
,d
,b
,y
字符都会被删除,而不是仅仅删除oldboy
字符串。
今天就写到这里,有什么疑问或出现什么错误,随时欢迎大神们发表评论指点迷津
以上是关于Shell命令-文件及内容处理之wc,tr的主要内容,如果未能解决你的问题,请参考以下文章
Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)