八、shell学习笔记-合并与分割

流过昼夜 提交于 2020-03-07 00:32:32

1、sort的使用方法

sort命令将许多不同的域按不同的列顺序分类。
sort命令的一般格式为:

sort -cmu -o output_file [other options] +pos1 +pos2 input_files
-c 测试文件是否已经分类。 
-m 合并两个分类文件。 
-u 删除所有复制行。 
-o 存储sort结果的输出文件名。
其他选项有: 
-b 使用域进行分类时,忽略第一个空格。 
-n 指定分类是域上的数字分类。 
-t 域分隔符;用非空格或tab键分隔域。 
-r 对分类次序或比较求逆。 
+n n为域号。使用此域号开始分类。 
n n为域号。在分类比较时忽略此域,一般与 + n一起使用。 
post1  传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7 个字符开始。

缺省情况下,sort认为一个空格或一系列空格为分隔符。要加入其他方式分隔,使用 - t选项。
sort执行时,先查看是否为域分隔设置了 - t选项,如果设置了,则使用它来将记录分隔成 域0、域1等等;如果未设置,用空格代替。缺省时 sort将整个行排序,指定域号的情况例外。

sort -t: -n filename.txt 按照空格和数字进行排序
sort -u filename.txt 去除重复项进行排序
sort -t: -k3 cc.txt  按照第三个域进行排序
sort -t: -k3 -k2 filename.txt 按照第三个域进行排序,再以第二域进行排序
sort -t: -m cc.txt cc2.txt -o cc3.txt 合并两个文件,并输出为一个新的文件
cat /etc/passwd | sort -t: -k1 |awk -F":" '{print $1}' 查看用户名进行分类

uniq使用方法:

uniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。 我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。

uniq -udc -f inputfile outputfile
-u   只显示不重复行。 
-d   只显示有重复数据行,每种重复行只显示其中一行 
-c   打印每一重复行出现次数。 
-f   n为数字,前n个域被忽略。 一些系统不识别- f选项,这时替代使用- n。

join的使用方法:

join用来将来自两个分类文本文件的行连在一起。
这里有两个文件 file1和file2,当然已经分类。每个文件里都有一 些元素与另一个文件相关。由于这种关系, join将两个文件连在一起,这有点像修改一个主文件,使之包含两个文件里的共同元素。

join [options] inputfile inputfile

cut的使用方法:

cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
cut一般格式为:

cut [options] file1 file2
-c list  指定剪切字符数。 
-f field  指定剪切域数。 
-d   指定与空格和tab键不同的域分隔符。 
-c  用来指定剪切范围,如下所示: 
-c 1,5-7  剪切第1个字符,然后是第5到第7个字符。 
-c 1-50  剪切前50个字符。 
-f 格式与-c相同。 
-f 1,5  剪切 第1域,第5域。 
-f 1,10-12  剪切第1域,第10域到第12域。 

paste使用方法:

cut用来从文本文件或标准输出中抽取数据列或者域,然后再用 paste可以将这些数据粘贴起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或tab键分隔新行中不同文本,除非指定- d选项,它将成为域分隔符。
paste格式为:

paste -d -s -file1 file2
选项含义如下: 
-d   指定不同于空格或tab键的域分隔符。例如用@分隔域,使用-d @。 
-s   将每个文件合并成行而不是按行粘贴。

split使用方法:

split用来将大文件分割成小文件。有时文件越来越大,传送这些文件时,首先将其分割可能更容易。使用vi或其他工具诸如sort时,如果文件对于工作缓冲区太大,也会存在一些问题。 因此有时没有选择余地,必须将文件分割成小的碎片。
split命令一般格式:

split -output_file-size input-filename output-filename

这里output - file - size指的是文本文件被分割的行数。split查看文件时,output - file - size选项 指定将文件按每个最多1000行分割。如果有个文件有2800行,那么将分割成3个文件,分别有 1000、1000、800行。每个文件格式为x[aa]到x[zz],x为文件名首字母,[aa]、[zz]为文件名剩余部分顺序字符组合,下面的例子解释这一点。

split -2 filename.txt 以2行进行分割

tr的使用方法:

tr用来从标准输入中通过替换或删除操作进行字符转换, tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。 tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:

tr-c-d-s["string1_to_translate_from"]["string2_to_translate_to"] input_file
这里: 
-c   用字符串1中字符集的补集替换此字符集,要求字符集为 ASCII。 
-d   删除字符串1中所有输入字符。 
-s   删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符 串。 
Input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
echo "May Day May Day" | tr '[a-z]' '[A-Z]' 将字符串的小写转化为大写

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!