linux命令怎么调整间距,Linux命令:cut

cut命令简介:

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

1.命令格式:

cut  [-bn] [file]

cut [-c] [file]

cut [-df] [file]

2.命令功能

从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

3.主要参数

-b :以字节为单位进行分割。(bytes)

这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

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

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

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

-n :取消分割多字节字符。仅和 -b 标志一起使用。

如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,

该字符将被写出;否则,该字符将被排除。

4.命令实例:

实例一:以“字节”定位,分别显示第3个和第14个字符

[root@fox tmp]# who

root     pts/0        2016-10-07 09:00 (10.*.*.*)

root     pts/1        2016-10-07 09:37 (10.*.*.*)

[root@fox tmp]# who | cut -b 3

o

o

[root@fox tmp]# who | cut -b 14

0

1

实例二:

1、以“字节”定位,同时显示第3,4个和第14个字符

[root@fox tmp]# who | cut -b 1-4,14

root0

root1

2、进行从小到大排序定位,然后再提取。可不能颠倒定位的顺序

[root@fox tmp]# who | cut -b 10,1-4,14

rootp0

rootp1

3、 -3表示从第一个字节到第三个字节

[root@fox tmp]# who | cut -b -3

roo

roo

4、3-表示从第三个字节到行尾

[root@fox tmp]# who | cut -b 3-

ot     pts/0        2016-10-07 09:00 (10.*.*.*)

ot     pts/1        2016-10-07 09:37 (10.*.*.*)

[root@fox tmp]# who | cut -b -3,3-

root     pts/0        2016-10-07 09:00 (10.*.*.*)

root     pts/1        2016-10-07 09:37 (10.*.*.*)

5、都是单字节字符,所以用-b和-c没有区别,

如果你提取中文,-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。

[root@fox tmp]#cat cut_ch.txt

星期一

星期二

星期三

[root@fox tmp]# cut -b 3 cut_ch.txt        乱码

[root@fox tmp]#cut -c 3 cut_ch.txt

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

[root@fox tmp]# cat cut_ch.txt |cut -nb 1,2,3

6、域,是设置“间隔符”,再设置“提取第几个域”

为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。

如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一项。

以/etc/passwd的前3行内容为例:

[root@fox tmp]# cat /etc/passwd|head -n 5

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

用-d来设置间隔符为冒号,用-f来设置我要取的是第一个域,列出所有的用户名。

[root@fox tmp]# cat /etc/passwd|head -n 5|cut -d : -f 1

root

bin

daemon

设定-f时,可使用例如3-5或者4-类似的格式:

[root@fox tmp]# cat /etc/passwd|head -n 5|cut -d : -f 1,3-5,7

root:0:0:root:/bin/bash

bin:1:1:bin:/sbin/nologin

daemon:2:2:daemon:/sbin/nologin

7、制表符辨认,以下方法可以看出一段空格到底是由若干个空格组成的还是由一个制表符组成。

[root@fox tmp]# cat tab_space.txt

this is tab finish.

this is several space      finish.

[root@fox tmp]# sed -n l tab_space.txt   (sed -n后面的字符是L的小写)

this is tab\tfinish.$

this is several space      finish.$

若是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。

通过此方法即可以判断制表符和空格。

8、制表符及空格为间隔符

cut的-d选项的默认间隔符是制表符,完全就可以省略-d选项;

cut -d ' ' 设定一个空格为间隔符;

[root@fox tmp]# cat tab_space.txt |cut -d ' ' -f 1    (单引号间有1个空格,且只允许1个)

this

this

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值