Linux查看文件类容命令:wc、grep、paste、split、压缩与解压缩、tar、cat、head、tail

130 阅读2分钟

wc —— 统计文件内容

命令wc(word count)

命令格式:wc ... [选项] ... 目标文件

统计列数,wc本身就是参数:

选项说明
-l统计行数
-w统计单词个数
-c统计字节数
[root@localhost zhutou]# cat zhutou -A   //先利用cat查看文件类容
123456$
654321 123$
data bin$
[root@localhost zhutou]# wc zhutou     //输入wc统计文件类容有多少行、词、字母,
 3  5 27 zhutou                       //此处单词和字符都不是真正的,空格也算字符个数。

[root@localhost zhutou]# wc -l zhutou //-l显示内容有多少行,空行也会算在内
3 zhutou
[root@localhost zhutou]# wc -w zhutou //-w显示内容有多少词汇
5 zhutou
[root@localhost zhutou]# wc -c zhutou //-c显示内容有多少字符,换行键也会算在内。
27 zhutou

wc统计的单词数并不是真正意义上的单词(这里的单词可以是数字、字母或者特殊字符),并且字符会把不可见的空格和转行符都算上

grep ——过滤文件中的内容

文本三剑客

grep(global regular expression print,全局正则表达式输出),用于查找文件里符合条件的字符串。

命令格式:grep..[选项]...匹配式...[文件或者标准输入]

选项类型:

选项说明
-i忽略大小写
-n显示行号
-v反向匹配
-o只显示匹配的内容
-r递归匹配 ,在海量数据中查找
-R递归目录,处理软连接
-w只匹配单词
-f以文件作为匹配条件

在passwd文件中找出包含root的内容

  • 要查找的字符串以双引号括起来,单引号也可以
  • “^……”表示以……开头,“……$”表示以……结尾
  • “^$”表示空行 
[root@localhost zhutou]# grep root passwd  //查看passwd有多少含有root的内容
root:x:0:0:root:/root:/bin/bash           //显示查找结果
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost zhutou]# grep "^root" passwd //加上^符为已root开头的
root:x:0:0:root:/root:/bin/bash
[root@localhost zhutou]# grep "c$" passwd   //$用在以什么结尾
sync:x:5:0:sync:/sbin:/bin/sync

匹配式(表达式)是不可以放在文件后的,否则会造成错误。

显示空行和特定单词的行

  1. 专指特定字符用"^root$"标记起来。
  2. 显示空行"^$" 并-n显示行号。
  3. -n显示行号 大小
[root@localhost zhutou]# grep -n "^$" passwd   //显示空行并显示行号
3:
4:
6:
[root@localhost zhutou]# grep "^root$" passwd   //专指特定字符
root
root

-i 忽略目标大小写

[root@localhost zhutou]# grep -i "root" passwd //-i显示目标大小写
root:x:0:0:root:/root:/bin/bash
root
root
operator:x:11:0:operator:/root:/sbin/nologin
ROOt
ROOt

-v与目标命令相反显示

[root@localhost zhutou]# grep -v "root" passwd  //-v与其命令相反显示
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

-o只显示匹配项

[root@localhost zhutou]# grep -o root passwd  //-o只显示匹配项
root
root
root
root
root
root

-r递归匹配,过滤海量数据查找,可用作于文件夹查找筛选文件。

[root@localhost zhutou]# grep -r "root" /etc
在文件夹下查找海量数据

-w只匹配单词

[root@localhost zhutou]# grep -w "root" passwd //-w只匹配单词
root:x:0:0:root:/root:/bin/bash
root
root

-f匹配两个文件中相同的部分

[root@localhost ~]# cat 1.txt 
111 
333 
[root@localhost ~]# cat 2.txt 
111 
222 
3 
[root@localhost ~]# grep -f 1.txt 2.txt   //过滤出两个文件的相同行 
111

合并与拆分

paste ——合并文件

命令格式:paste...[选项]...文件名 -d——指定分隔符

例如合并AB两个文件

  1. 上下合并:cat 文件名a 文件名b > 新文件名(cat 123 456 > 111)
  2. 左右合并:paste 文件名a 文件名b (paste -d ":" 123 456)

标准输出重定向:改变原本标准输出的方向,更改为别的方向。

上下合并:把两个文件上下格式的合并成一整个新的文件

image.png 上下合并

image.png 左右合并

split 拆分文件

命令格式 : split [选项] 指定大小 [要切割的文件][输出文件名前缀]

压缩与解压缩

 bzip2 与 gzip

bzip2 与 gzip都是压缩软件,但是不能压缩文件夹,只能压缩单个文件。

压缩流程

制作压缩包

gzip [-9] 文件名(其中这里的-9表示为压缩比例,1.....9九为最大压缩率最高)

bzip2 [-9] 文件名...

1~9 指定压缩级别, 数字越大压缩级别越高 。-1最快压缩,-9最大压缩 。

解压压缩文件

gzip -d .gz格式的压缩文件

bzip2 -d .bz2格式的压缩文件

gzip和bzip的相同点:

原理:只能压缩文件 , 不能压缩目录 。并且默认压缩后会删除源文件。

tar归档文件夹 *****

把多个文件打包成一个大文件,再调用bzip2或gzip来进行压缩

tar命令格式:tar—— [选项] —— 自定义压缩包名称——要压缩文件

选项说明:

选项说明
-c新建打包文件
-f表示使用归档,默认选项一定要加
-x解打包或解压缩的功能,可以搭配
-C指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j通过bzip2的支持进行压缩/解压缩
-z通过gzip的支持进行压缩/解压缩
-v在压缩/解压缩过程中,将正在处理的文件名显示出来
-t不解压查看打包文件的内容

演示:

[root@localhost zhutou]# tar -zcvf zhu.tar.gz *  //将当前文件夹中三个文件归档后调用gzip程序压缩成zhu.tar.gz
passwd
passwd1
passwd2
[root@localhost zhutou]# ls
passwd  passwd1  passwd2  zhu.tar.gz
[root@localhost zhutou]# 
[root@localhost zhutou]# tar -jcvf zhu.tar.gz *   //将当前文件夹中三个文件归档后调用bzip程序压缩成zhu.tar.gz
passwd
passwd1
passwd2
zhu.tar.gz
[root@localhost zhutou]# ls
passwd  passwd1  passwd2  zhu.tar.gz
[root@localhost zhutou]# tar tf zhu.tar.gz      //在不解压的情况下查看压缩包内的内容
passwd
passwd1
passwd2

cat(concatenate)显示文件内容

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

命令格式:cat...[选项]...[文件名称]

选项说明:

选项用途说明
-n显示行号(包括空行)
-A显示隐藏字符($.#)
-b跳过空白行编号
-s压缩空白行(多个压缩成一个)

演示:

用cat查看系统内核版本

[root@localhost /]# cat /etc/centos-release          //查看系统内核版本
CentOS Linux release 7.4.1708 (Core) 
[root@localhost /]# cat /proc/version                //查看系统内核版本
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

cat加-n选项显示行号(包括空行)

[root@localhost zhutou]# cat -n passwd                //加选项-n显示行号包括空行
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin
     3	
     4	
     5	root
     6	
     7	root
     8	daemon:x:2:2:daemon:/sbin:/sbin/nologin

cat加选项-s -b处理空行,-s压缩连续空白行为一行,-b 跳过空白行标序

[root@localhost zhutou]# cat -sb passwd     //输入-s -b 方便查看
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin
                                            //压缩连续空白行为一行,并且不表序。
     3	root

     4	root
     5	daemon:x:2:2:daemon:/sbin:/sbin/nologin

查看头部和尾部文件类容——head和tail

命令格式:

head -n <行数> 文件名 (不加行数默认开头十行)

tail -n<行数> 文件名 (不加行数默认结尾十行)

tail -f 文件名:实时跟踪最后十行

演示:

通过head和tail命令来进行对比

[root@localhost zhutou]# head -n3 hehe  //查看文件前三行内容
1
2
3
[root@localhost zhutou]# tail -n3 hehe  //查看文件后三行的内容
98
99
100

head、tail两者结合管道符的使用

[root@localhost zhutou]# head passwd  //原本文件前十行内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

root
root
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

[root@localhost zhutou]# cat passwd |head -n2 | tail -n1 
//现在要取前两行的最后一行也就是第二行
bin:x:1:1:bin:/bin:/sbin/nologin