下面是对linux命令中,对文件的操作的总结。
1. cut
cut命令用于显示每行从开头算起 num1 到 num2 的文字。即,截取指定字段并输出。
cut [-bcdnf] [file]
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
举例:
cut -c-2 test (打印前2个字符) cut -c5- test (打印从第5个字符开始到结尾) cut -d " " -f 2 test (以空格为分隔符,打印第二列)
2. split
split命令用于将一个文件分割成数个。
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
-<行数> : 指定每多少行切成一个小文件 -b<字节> : 指定每多少字节切成一个小文件 -C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性 [输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
举例:
Split -5 test (会将原来的大文件"test"切割成多个以"x"开头的小文件。而在这些小文件中,每个文件都只有5行内容)
3. join
join命令用于将两个文件中,指定栏位内容相同的行连接起来。
join [-i][-a<1或2>][-e<字符串>][-o<格式>][-t<字符>][-v<1或2>][-1<栏位>][-2<栏位>][--help][--version][文件1][文件2]
-a<1或2> 除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行。 -e<字符串> 若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串。 -i或--igore-case 比较栏位内容时,忽略大小写的差异。 -o<格式> 按照指定的格式来显示结果。 -t<字符> 使用栏位的分隔字符。 -v<1或2> 跟-a相同,但是只显示文件中没有相同栏位的行。 -j FIELD :等同于 -1 FIELD -2 FIELD,-j指定一个域作为匹配字段 -1<栏位> 连接[文件1]指定的栏位。 -2<栏位> 连接[文件2]指定的栏位。
举例:
join test1 test2 (默认比较两个文件,将两个文件中第一行的内容相同的行连接起来) join –a1 test1 test2 (左连接,显示左边文件中的所有记录,右边文件中没有匹配的显示空白。) join –a2 test1 test2 (右连接,显示右边文件中的所有记录,左边文件中没有匹配的显示空白。) join –a1 –a2 test1 test2 (全连接,显示左边和右边所有记录)
4. paste
paste命令用于合并文件的列。
paste [-s][-d <间隔字符>][--help][--version][文件...]
-d<间隔字符>或--delimiters=<间隔字符> 用指定的间隔字符取代跳格字符。 -s或--serial 串列进行而非平行处理。
举例:
paste –d: test1 test2 (合并2个文件,并以:为分隔符进行连接)
5. uniq
uniq命令用于检查及删除文本文件中重复出现的行列。
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
-c或--count 在每列旁边显示该行重复出现的次数。 -d或--repeated 仅显示重复出现的行列。 -u或--unique 仅显示出一次的行列。 -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。 -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。 -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。 [输入文件] 指定已排序好的文本文件。 [输出文件] 指定输出的文件。
举例:
uniq一般需要配合sort使用,对已排序的文件进行操作。如: 对已排序的文件,删除重复行; sort test|uniq 对已排序的文件,仅显示重复出现的行(仅出现一次的行); sort test|uniq –d(-u) 对已排序的文件,在每列前显示该行重复次数,并根据重复次数再次排序; sort test|uniq –c|sort -r
6. sort
sort命令用于将文本文件内容加以排序。
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
-b 忽略每行前面开始出的空格字符。 -c 检查文件是否已经按照顺序排序。 -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。 -f 排序时,将小写字母视为大写字母。 -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。 -m 将几个排序好的文件进行合并。 -M 将前面3个字母依照月份的缩写进行排序。 -n 依照数值的大小排序。 -o<输出文件> 将排序后的结果存入指定的文件。 -r 以相反的顺序来排序。 -t<分隔字符> 指定排序时所用的栏位分隔字符。 +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
举例:
sort –r test #逆序排列文件