天天看点

Cut用法 和 awk的相关区别

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f  :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

1.cut -b 3-5,8 选取第3-5个字节,和第8个字节。

2.cut -b 必须从小到大,cut -b 8,3-5 只会显示3-5字节。

3.cut -b -3:显示第1到第3

  cut -b 3-:显示第3到最后 

  cut -b -3,3- :显示全部,并不会重复中间的交集

4. cut -c 字符分界

[[email protected] programming]$ cat cut_ch.txt

星期一

星期二

星期三

星期四

[[email protected] programming]$ cut -b 3 cut_ch.txt

[[email protected] programming]$ cut -c 3 cut_ch.txt

当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下:

[[email protected] programming]$ cat cut_ch.txt |cut -b 2

[[email protected] programming]$ cat cut_ch.txt |cut -nb 2

[[email protected] programming]$ cat cut_ch.txt |cut -nb 1,2,3

5.cut -d ' ' -f 1,2-,或者-3

  但是cut -d 只对单一空格的有效,多空格或者制表符就不行。

这个时候需要AWK

举例:

[email protected] ~/work/shell $ echo "a  b c" | cut -d " " -f2

[email protected] ~/work/shell $ echo "a  b c" | awk '{print $2}'

b

去空方法:

1.  sed s'/  *//g' urfile

2.   tr -d " "

3.  awk -v OFS="" '$1=$1' ufile