Linux文件内容操作【wc、grep、paste、tar】

184 阅读2分钟

一、 统计

wc (word count)统计文件内容

命令格式\color{red}{命令格式 } :wc [选项] 目标文件

选项效果
-l统计行数
-w统计单词个数
-c统计字节数
什么也不加lwc三个选项全显示

wc统计的不是真正的单词个数,空格、隐藏字符等也会算在其中(tab键、空格 算单词的分隔符,其余都不算)

wc可以接收标准输出然后进行统计

  • 标准输入:你用键盘输入发信息叫标准输入
  • 标准输出:电脑反馈给你正确的信息叫标准输出
  • 错误输出:电脑反馈给你非正确的信息叫错误输出

wc命令.png

二、 过滤

grep 检索和过滤文件内容

非常重要!!! 文本三剑客(grep、awk、sed) 之一,用来过滤文本中你感兴趣的内容

命令格式\color{red}{命令格式 } : grep [选项]... 匹配式/表达式 [文件名]或标准输入 ( 匹配式不能放在文件后面!)

选项效果
-i忽略大小写
-v反向匹配 ,输出与查找条件相反的行
-n显示行号
-o只显示匹配的内容
-r递归匹配    (后面可以跟文件夹)
-w只匹配单词
-f以文件作为匹配的条件  (过滤两个文件中重合的部分)

正则表达式:匹配文章里的内容(字符串),一般与grep搭配使用 【通配符用来匹配文件名字,一般与ls 、 find搭配使用】

  • 正则表达式可用来表示字符的次数
  • 表示位置

^ : 表示以什么字符开头 (开头就写在最开头)

$ : 表示以什么字符结尾 (结尾就写最后)

^$ :表示空行

^root$ : 表示这一行只有root四个字符

```举例
grep   “^$”              //过滤空行
grep  -v  “^$”           //过滤非空行
grep  -v  “^#”           //过滤不是以#号开头的行
```面试题
问法1:有海量数据,这些海量数据在文件里面,想从这些文件里面找到特定字符
问法2:有一个文件夹叫/etc/ ,想快速过滤出/etc/下所有包含root字符串的文件

错误写法:grep  root  /etc        错误原因:root 后面不能跟文件夹
正确写法:grep  -r   root  /etc   加了-r后可以跟文件夹

三、 合并与拆分

1. paste 合并文件

命令格式\color{red}{命令格式 } : paste [选项] 文件名...

选项效果
-d指定分割符

怎样合并A和B两个文件?

  • 上下合并 : cat 文件名a 文件名b > 新文件名

  • 左右合并 : paste 文件名a 文件名b

合并后想要永久保存需要重定向

  • 标准输出重定向:本来输出在屏幕上的内容,改变了输出方向,输出到了文件中

2. split 拆分文件

命令格式 : split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]

-b<字节>:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。

-<行数>或-l<行数>:指定每多少行要拆分成一个文件。 输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。

-a<后缀长度>:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。

四、 压缩与解压缩

bzip2 、 gzip不能压缩文件夹,只能压缩单个文件

1. bzip2 、 gzip

  • 制作压缩文件

gzip [-9] 文件名… (9代表压缩比率,9最大1最小)

bzip2 [-9] 文件名...

gzip的压缩率 要高于bzip2

  • 解开压缩文件

gzip -d .gz格式的压缩文件 ( d就是解压 )

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

2. tar 归档

可以压缩文件夹

命令格式\color{red}{命令格式 } : tar [选项] 自定义压缩包名字 要压缩的文件

选项效果
-c建立归档文件
-f代表使用归档   只要使用tar命令必须要加!加了-  f必须放在最后,否则无法执行;不加-  选项随便。所以!建议直接写 tar  f  ,不要加-
-x解压缩
-C (大写)指定解压的文件夹
-j调用bzip2压缩
-z调用gzip压缩
-v显示过程,解压和压缩
-t不解包的情况下查看里面的文件列表

解压命令:tar xf 压缩包名字 -C 指定解压目录 ( 解压的时候不用指定gzip/bzip ,f写在后面 )

tar命令.png

3. 6. zip 、 unzip(了解,市场环境中不推荐)

zip可以实现打包目录和多个文件成一个文件并压缩,但可能会丢失文件属性,一般用tar代替