0%

Linux的文本处理工具(二)

cut

cut一般可以认为用来切割数据,并在标准输出上显示,所以也可认为用来显示指定部分的数据,当然也是以行为单位,这个跟sed很像 cut命令格式为:

cut 选项 参数

常用选项:

-b : 以字节为单位,提取出指定一定范围内的字节
-c : 以字符为单位,提取出指定一定范围内的字符
-f : 以字段为单位,提取出指定一定范围内的字段
-d : 指定字段的分隔符,一般搭配-f使用
-n : 设定不分割多字节字符,一般搭配-b使用
--complement : 提取出指定字段以外的字段

注:一个汉字算三个字节,一个空格算一个字节

常见用法:

  1. 提取每行前5个字节

     cut -b 1-5
  2. 提取每行第1个和5-6个的字节

     cut -b 1,5-6
  3. 提取每行前2个字符

     cut -c 1-2
  4. 提取每行以:分割的第2、第5个字段(cut的间隔符只允许是一个字符)

     cut -t : -f 2,5 
  5. 提取除第2个字段意外的所有的字段

     cut -f 2 --complement

head && tail

虽然说提取文本的前几行有很多方法可以实现

比如perl的单行命令,提取前5行

perl -lne 'print $_ if $. <= 5' abc.txt

比如sed命令,提取前5行

sed 5q abc.txt
sed -n 1,5p abc.txt
  1. 但是用head命令是最简单有效的,如:

     head -n 5 abc.txt
  2. 显示从头到倒数第2行

     head -n -1 abc.txt
  3. 当然如果是显示倒数3行内容,那可使用tail命令了

     tail -n 3 abc.txt
  4. 如果要显示文件的头信息(其实是文件名?),则需要用-v参数

     head -n 5 -v abc.txt
  5. head还可设置显示最开始的内容的字符数

     head -c 100 abc.txt

wc

wc是平时用的比较多的命令了,用于计算行数,一般常用于处理来自管道的输入数据

wc如果不加任何参数的话,是默认输出一行报告,分别是行数,字符数以及字节数

  1. 计算2个文件的数据,不加参数,则分别输出2个文件的行数,字符数和字节数

     wc abc.txt xxx.txt
  2. 加上-c参数表示只计算字节数,-l表示行数,-w表示字符数;一般应该还是行数的用的比较多吧

     wc -c abc.txt
     wc -l abc.txt
     wc -w abc.txt

最后应该是awk命令,但是其作为一种编程语言,在linux下的一个强力文本处理工具,其用法是比较复杂的,但是由于perl用的更加得心应手,所以一直没去学awk了。。。

本文出自于http://www.bioinfo-scrounger.com转载请注明出处