Linux 下cut的使用

Linux下如何剪断你的千丝万缕

命令是:cut
从字面上来看,cut 命令与剪切有关,实际也是如此,cut 命令将一个字符串按某种特定的方式进行裁剪提取并输出。结合其它命令,cut 可以很轻松的提取其它命令输出结果中我们所需要的内容。

cut基本格式:
cut 选项 文件

命令选项:
-b: 以字节为单位进行分割;
-c: 以字符为单位进行分割;
-d: 自定义分割符,默认是制表符;
-f: 以区域为单位进行分割,常与 -d 选项一起使用;
-n: 取消分割多字节字符,仅与 -b 选项同用;

从对 cut 命令的选项描述来看,该命令一般通过三种单位进行分割:字节、字符、域 。下面详细介绍这三种分割方式。

以字节为单位进行分割

假如现在有个 test1.txt 文件,文件内容如下:
$ cat test1.txt
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
 
 
1.提取每一行的第 1 个字节
命令如下:
$ cut -b 1 test1.txt
M
T
W
T
F
S
S

2.提取每一行的第 2 、4 、6 个字节
命令如下:
$ cut -b 2,4,6 test1.txt
ody
usa
ens
hrd
rdy
aud
udy

3.提取每一行的第 3、4、5、6 个字节
如果字节是连续的,我们就没必要一个个列出来,只需使用短横杠 - 将区间列出来即可,如下:
$ cut -b 3-6 test1.txt
nday
esda
dnes
ursd
iday
turd
nday

4. 提取第 1、2、3 及 6 个字节
命令如下 :
$ cut -b 1-3,6 test1.txt
Mony
Tuea
Weds
Thud
Friy
Satd
Suny

5. 提取前 3 个字节或第 3 个字节之后的内容
命令如下:
$ cut -b -3 test1.txt
Mon
Tue
Wed
Thu
Fri
Sat
Sun
$ cut -b 3- test1.txt
nday
esday
dnesday
ursday
iday
turday
nday

以字符为单位进行分割

字节与字符的差别是啥?举个例子吧,a 这是一个字节,而 啊 这是一个字符,明白了吧?对于汉字而言,每一个汉字都是一个字符。
假如现在有个 test2.txt 文件,它的内容如下:
$ cat test2.txt
良许真帅
守望文章写得好
小灰仓鼠很可爱
明哥真爷们

如果以字节为单位分割,那效果是如何的呢?
$ cut -b 2 test2.txt
▒
▒
▒
▒
很明显,一堆乱码。如果要正确分割字符,那么就需要 -nb 或 -c 选项。
$ cut -nb 2 test2.txt
许
望
灰
哥
$ cut -c 2 test2.txt
许
望
灰
哥

以域为单位进行分割

域是什么?我们以 /etc/passwd 文件为例说明。
$ 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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
从 passwd 文件可以明显看出来,每个用户的各项信息是用冒号 : 进行隔开,所隔开的每项内容都可以称为「域」,而冒号称为「间隔符」。

现在,我们想要提取每一行的第一个域,命令如下:
$ cat /etc/passwd | head -n 5 | cut -d : -f 1
root
bin
daemon
adm
lp
在这里,我们用 -d 选项来指定冒号 : 为间隔符,然后再用 -f 选项来指定要提取的域。当然,间隔符不仅仅是冒号,我们还可以指定其它符号,比如逗号,空格,等等。
但是,如果一个字符串里如果两个单词间有多个空格,则 cut 命令将无法分辨,所以这也是 cut 命令的缺陷。

转载于:https://www.cnblogs.com/Monarch-T/p/10439866.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值