欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

处理文件数据

程序员文章站 2022-06-03 17:58:46
...

处理文件数据

1 排序数据

处理大量数据时的一个常用命令是sort命令。
默认情况下,sort命令会根据默认语言的排序规则来对文本文件中的数据进行排序。

1.1 sort命令格式

sort file

1.2 sort命令参数

参数 描述
-b 排序时忽略起始的空白
-c 不排序,但检查输入数据是否已排序;未排序则报告
-d 仅考虑空白和字母,不考虑特殊字符
-f 忽略大小写
-g 把值当成浮点数来排序
-i 排序时忽略不可打印字符
-k pos1[,pos2] 排序从pos1位置开始;若指定pos2,则到pos2位置结束
-M 用三字符月份名按月份排序
-m file1 file2 将两个已排序的数据文件合并
-n 按字符串数值来排序(并不转换为浮点数)
-o file 将排序结果写进file中
-r 反向排序
-S size 指定使用的内存大小为size
-t sep 指定一个用来区分键位置的字符
-z 用NULL字符为行结尾而不是用换行符
  • 按字段分隔的数据进行排序

    例如排序/etc/passwd文件时,可以使用-t参数来指定字段分隔符,用-k参数来指定排序的字段,如对用户ID进行排序,可以按如下方式做:

sort -t ':' -k 3 -n /etc/passwd

file:///H:/WizNote/temp/2567a206-bf86-4768-919e-af8e761ba706_4_files/cfa413d4-4685-4586-953a-5edffa47615f.png

2 搜索数据

使用grep命令可以在大文件中快捷地查找想要的数据。

2.1 grep命令格式

grep [option] pattern [file]

grep命令会到输入中或被指定文件中查找包含匹配指定模式的字符的行并高亮之。

grep something file

上述例子将从文件file中搜索能匹配模式something的文本并输出之。

2.2 grep命令参数

参数 描述
-v 反向搜索,输出不匹配该模式的行
-n 显示匹配模式的行所在的行号
-c 只输出有多少行含有匹配的模式
-e 匹配多个模式,每个匹配模式都要用-e来指定

默认情况下,grep命令使用基本的Unix风格正则表达式来匹配模式。

3 压缩数据

Linux的几个文件压缩工具:

工具 文件扩展名 描述
bzip2 .bz2 采用Burrows-Wheelers块排序文本压缩算法和霍夫曼编码
gzip .gz GNU压缩工具,用Lempel-Ziv编码
zip .zip Windows上PKZIP工具的UNIX实现

3.1 bzip2

bzip2工具采用Burrows-Wheelers块排序文本压缩算法和霍夫曼编码,在压缩大型二进制文件领域尤其流行。

  • bzip2软件工具

    工具 描述
    bzip2 用来压缩文件
    bzcat 用来显示压缩的文本文件的内容
    bunzip2 用来解压压缩后的.bz2文件
    bzip2recover 用来尝试恢复损毁的压缩文件

默认情况下,bzip2命令尝试压缩原始文件,并用压缩后的文件(同样的文件名后加.bz2扩展名)替换他。

bzip2 file          //生成file.bz2
bunzip2 file.bz2    //解压生成file

3.2 gzip

Linux上最流行的文件压缩工具就是gzip工具。

  • gzip软件工具

    工具 描述
    gzip 用来压缩文件
    gzcat 用来查看压缩过的文本文件的内容
    gunzip 用来解压.gz文件

默认情况下,gzip命令尝试压缩原始文件,并用压缩后的文件(同样的文件名后加.gz扩展名)替换他。
gzip允许指定多个文件甚至通配符进行压缩,此时它会压缩该目录中通配符的每个文件。

gzip file           //生成file.gz
gunzip file.gz      //解压生成file
gzip file*          //将文件名前缀为file的文件进行压缩

3.3 zip

zip工具和流行的Windows下的PKZIP软件时兼容的。

  • zip软件工具

    工具 描述
    zip 创建一个压缩文件,包含指定文件和目录
    zipcloak 创建一个加密的压缩文件,包含指定的文件和目录
    zipnote 从zip文件中提取批注
    zipsplit 将一个现有zip文件分割成多个更小的固定大小的文件
    unzip 解压缩zip文件

3.3.1 zip命令格式

zip zipFile file    //将file压缩生成ZipFile.zip

zip有多个可选参数,详情可直接输入zip进行查阅。
一个有用的参数就是-r,他支持将整个目录下的文件都压缩进单个文件,从而便于归档整个目录结构。

zip -r testzip test

上述例子创建了testzip.zip文件,并递归目录test把所有该目录下的文件都加进该zip文件。
但不是所有存进该zip文件的文件都能被压缩,zip工具自动决定针对每个单独文件的压缩类型。

3.3.2 zipcloak

zipcloak用于为.zip文件添加解压密码。

zipcloak file.zip   //为file.zip添加密码

执行完命令后就需要输入密码并确认密码。

4 归档数据

目前,UnixLinux上最广泛使用的归档工具是tar

4.1 tar命令格式

tar function [option] object1 object2 ...
  • function

    function参数定义了命令该做什么。

    功能 全字名称 描述
    -A --concatenate 将一个已有tar归档文件追加到另一个已有tar归档文件
    -c --create 创建一个新的tar归档文件
    -d --diff 检查归档文件和文件系统的不同之处
    --delete 从已有tar归档文件中删除
    -r --append 追加文件到已有tar归档文件的内容
    -t --list 列出已有tar归档文件的内容
    -u --update 追加比tar归档文件中已有的同名文件新的文件
    -x --extract 从已有tar归档文件中提取文件
  • option

    选项 描述
    -C dir 指定目录
    -f file 输出结果指定到文件或设备file
    -j 将输出重定向给bzip2命令来压缩
    -p 保留所有文件权限
    -v 在处理文件时显示文件
    -z 将输出重定向到gzip命令来压缩
  • 常用选项

    下面的命令将创建一个含有test1test2目录内容的叫test.tar的归档文件。

tar -cvf test.tar test1/ test2/

下面的命令将列出test.tar的内容,但并不解压文件。

tar -tf test.tar

下面的命令将从tar文件中提取出内容。

tar -xvf test.tar
  • 提示

    当遇到以文件名为.tgz结尾的文件时,代表其为gzip压缩过的tar文件,此时可以以下命令进行解压。

tar -zxvf filename.tgz