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 -d : -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了。。。