LINUX入门常用命令之文本处理

本文介绍了Linux系统中sort命令的使用方法及其多种选项,帮助用户实现数据排序和管理。同时,文章还详细讲解了如何利用uniq命令去除排序后文件中的重复行。

Linux文本处理命令 
sort命令

sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。

Sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。

语法:

sort [选项] 文件

说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则表示排序内容来自标准输入。

sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。

改变缺省设置的选项主要有:

- m 若给定文件已排好序,合并文件。

- c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。

- u 对排序后认为相同的行只留其中一行。

- o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。

改变缺省排序规则的选项主要有:

- d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。

- f 将小写字母与大写字母同等对待。

- I 忽略非打印字符。

- M 作为月份比较:“JAN”<“FEB”

- r 按逆序输出排序结果。

+posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。

- b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。

- t separator 指定字符separator作为字段分隔符。

 

uniq命令

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

语法:

uniq [选项] 文件

说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

该命令各选项含义如下:

- c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

- d 只显示重复行。

- u 只显示文件中不重复的各行。

- n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

- f n 与- n相同,这里n是字段数。

- s n 与+n相同,这里n是字符数。
 

批量删除行:包括删除前后行、删除连续行、删除奇数行、删除偶数行、删除空白行、删除重复行、删除特定行、删除含有关键字的行。 1、 批量删除前后行:删除多个文本文件最前面几行,或者最后面几行; 2、批量删除连续行:删除文本文件中 连续行,3 19(则删除3-19行的内容) 3、批量删除奇数行:删除文本文件中奇数的行,1、3、5、7…… 4、批量删除偶数行:删除文本文件中偶数的行,2、4、6、8…… 5、批量删除空白行:删除文本文件中 只含有空格或者制表符或者没有任何内容的行 6、批量删除重复行:重复行是针对单个文件来说的,删除重复行之后 文件内容的顺序保持源文件行的顺序,不会打乱。 7、批量删除特定行:特定行是自定义行,目前不支持省略输入,支持输入固定数字 例如: 1,3,7,10,20 8、批量删除含有关键字的行:删除含有关键字的行,可以是一个关键字,可以是多个关键字,(多个关键字: 某一行含有的多个关键字) 批量删除文本:包括删除文本、替换文本、删除行首数字、删除行首尾多少个字符。 9、批量删除数据(文本):删除多个文件中含有特定文本。 10、批量替换文本:多个文件中批量替换文本 11、删除行首数字:删除行首的数字,一般对于行首递增的数字有明显效果。 12、批量删除行首字符:删除行首自定义多少个字符,一个字母,一个数字,一个汉字,一个标点都是一个字符。如果你不知道或者不想数多少个字符,可以让程序计算。 13、批量删除行尾字符:同上。 合并:包括普通合并、合并+数据、隔行合并、左右合并4种。 14、合并:普通合并,就是正常的多个文本文件进行合并,按照行的合并,第一个文件的最后一行,和第二个文件第一行不在同一行,是两个连续的行。以此类推。(好像是废话) 15、合并+数据:多个文件合并的时候直接添加数据,可以是多行数据。 16、合并+文件名:多个文件合并的时候直接添加文件名(不包括路径,不包括后缀名),可以是多行数据。 17、合并+数据+文件名:多个文件合并的时候先添加数据,再添加文件名(不包括路径,不包括后缀名)。 18、隔行合并:多个文件进行隔行合并。如果有3个文件进行隔行合并, 新文件的行的构成:File1的第一行 + File2的第一行 + File3的第一行 + File1的第二行 + File2的第二行 + File3的第二行 + …… 19、左右合并:左右合并因为需求不高,目前仅支持2个文件左右合并;如果想要进行多个文件左右合并,可以进行多次左右合并。 左右合并:原谅我这样命名下面说明 新文件构成:File1的第一行+ File2的第一行 作为新文件的第一行。 File1的第二行+ File2的第二行 作为新文件的第二行。 ……………………………… 中间可以自定义添加数据。 批量拆分:多个文件可以按照固定个数拆分、固定行数拆分、拆分奇偶行等模式进行拆分。 20、批量拆分,设置拆分新文件的个数:拆分成固定的个数。 说明:按照行进行拆分,不会把一行拆分成两个! 21、批量拆分,设置每个新文件的行数:拆分成多个文件。 22、批量拆分,拆分奇偶行:奇数的行拆分到一个文件,偶数的行拆分到一个文件。 批量添加数据:可以批量向文本文件最前面或者最后面添加数据、可以向行首尾添加数据、 可以向文件中添加文件名。 23、批量添加文本(数据)到文件首尾:可以添加多行文本到文件的首尾,支持添加过的不进行重复添加,(判断是否重复添加的标准是某一行完全一样,包括空格等符号)。 24、批量添加文本到行首尾:可以批量添加文本到每一行的最前面或者最后面。支持添加递增的数字。递增数字:就是每一行添加的数字不一样,或者叫做行号 25、批量添加文件名到文件首行:添加的文件名可以自定义包含路径和包含扩展名。 目前支持添加到行首,文件名前后可以自定义添加数据 其他处理方式:包括添加文件夹、重命名、恢复备份文件、查找个数、转换编码、重新排序。 26、添加文件夹,就是直接添加一个文件夹,说明添加文件或者添加文件夹的时候,如果已经存在则跳过添加。说明:添加文件夹的时候,不会将子文件夹添加进来。 27、重命名:并不是自定义文件名,这个名字是根据每个文件的第一行,并且提取每个文件的第一行作为新的文件名,旧的文件名也可以自定义保留。 说明:如果第一行没有合法的数据可以作为文件名,则顺延至第二行,以此类推。 28、恢复备份文件:程序会产生备份文件,如果处理后的文件不能满意,则恢复到原始状态。 说明:程序产生的备份文件是源文件名+“.bak”的形式。 注意:用户可以自定义要不要备份文件,程序中如果出现多次处理都要产生备份文件,每次产生备份文件先删除之前的备份文件。然后生成新的备份文件。(这个理念根据editplus中生成备份文件的方式) 恢复备份文件:程序中会将.bak后缀的文件恢复到去掉.bak后缀。如果新文件已经存在,则删除之后,再恢复。 (数据无价,建议用户自己先备份,然后使用本程序,如果处理的结果满意,则再考虑删除源文件) 29、批量查找个数:批量从多个文本文件中查找输入文本的个数,程序的状态一栏会显示找到了多少 30、批量转码:多个文本文件批量转成自己想要的文件编码: 常见的文件编码ANSI, Unicode, Unicode big endian, UTF-8。这四种编码类型都可以用windows自带的记事本打开。批量转换编码,方便在其他设备上查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值