cut命令的使用

cut命令的选项

cut基本语法:

cut OPTION... [FILE]...
选项:
-f : 通过指定哪一个字段进行提取。cut命令使用“TAB”作为默认的字段分隔符。
-d : “TAB”是默认的分隔符,使用此选项可以更改为其他的分隔符。
--complement : 此选项用于排除所指定的字段。
--output-delimiter : 更改输出内容的分隔符。
如何分割

cut最常用的选项是-d和-f的组合。它基本上会根据特定的分隔符和列出的字段提取内容。

下面的代码仅使用分隔符:打印/etc/passwd文件中每一行的第一个字段。

[root@localhost ~]# cut -d ':' -f 1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown

下面的代码从/etc/passwd文件提取第一和第六个字段:

[root@localhost ~]# grep '/bin/bash' /etc/passwd| cut -d ':' -f 1,6
root:/root
bob:/home/bob
user01:/home/user01

要显示字段的范围,请指定以-分隔的开始字段和结束字段,如下所示:

[root@localhost ~]# grep '/bin/bash' /etc/passwd|cut -d ':' -f 1-4,6,7
root:x:0:0:/root:/bin/bash
bob:x:1000:1001:/home/bob:/bin/bash
user01:x:1001:1002:/home/user01:/bin/bash
排除所指定的字段

在下面的代码中,打印所有字段,除了/etc/passwd文件中的第二个字段:

[root@localhost ~]# grep '/bin/bash' /etc/passwd|cut -d ':' --complement -f 2
root:0:0:root:/root:/bin/bash
bob:1000:1001::/home/bob:/bin/bash
user01:1001:1002::/home/user01:/bin/bash
如何指定一个输出内容的分隔符

要指定输出分隔符,请使用–output-delimiter选项。输入分隔符由-d选项指定,默认情况下输出分隔符与输入分隔符相同。
先看一下没有使用–output-delimiter选项,是什么样子的:

[root@localhost ~]# cut -d ':' -f1,7 /etc/passwd|sort
adm:/sbin/nologin
avahi:/sbin/nologin
bin:/sbin/nologin
bob:/bin/bash
chrony:/sbin/nologin
daemon:/sbin/nologin
dbus:/sbin/nologin
ftp:/sbin/nologin
games:/sbin/nologin
grafana:/sbin/nologin
halt:/sbin/halt
lp:/sbin/nologin
mail:/sbin/nologin
nfsnobody:/sbin/nologin
nobody:/sbin/nologin
ntp:/sbin/nologin
operator:/sbin/nologin
…

现在使用–output-delimiter选项,输出分隔符使用’ ‘空格分隔,看一下是什么样子的:

[root@localhost ~]# cut -d ':' -f1,7 --output-delimiter=' ' /etc/passwd|sort
adm /sbin/nologin
avahi /sbin/nologin
bin /sbin/nologin
bob /bin/bash
chrony /sbin/nologin
daemon /sbin/nologin
dbus /sbin/nologin
ftp /sbin/nologin
games /sbin/nologin
grafana /sbin/nologin
halt /sbin/halt
lp /sbin/nologin
mail /sbin/nologin
nfsnobody /sbin/nologin
nobody /sbin/nologin
ntp /sbin/nologin
operator /sbin/nologin
### cut 命令介绍 Linux cut 命令将行按指定的分隔符分割成多列,从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定文件参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一,分隔符必须是单个字符[^2]。 ### 常用选项 - `-b`:按字节提取,一个空格算一个字节,一个汉字算三个字节[^4]。 - `-c`:按字符提取,中文字符和空格都算一个字符[^4]。 - `-f`:按域提取,以指定分隔符分割行,提取相应的域[^4]。 - `-d`:指定域分隔符,默认间隔符是制表符[^4]。 - `--complement`:输出指定范围之外的部分。 - `--output-delimiter`:指定输出的分隔符。 ### 基本使用 #### 指定字段的内容 以 `/etc/passwd` 文件为例,使用 `-d` 指定分隔符为冒号,`-f` 指定要提取的域: ```bash head -n5 /etc/passwd | cut -d : -f 1,3-5 ``` 此命令将输出 `/etc/passwd` 文件前 5 行中第 1、3、4、5 个域的内容[^4]。 #### 使用分隔符打印文本内容 使用 `who` 命令输出当前登录用户信息,再用 `cut` 按空格分割并提取特定字段: ```bash who | cut -d ' ' -f1 ``` 该命令将输出当前登录用户的用户名[^5]。 #### 显示行中指定范围的字符 ```bash date | cut -c 1-5 ``` 此命令将输出日期的前 5 个字符[^4]。 ### 日常使用 #### 提取 IP 地址 ```bash ifconfig eth0 | grep 'inet ' | cut -d ' ' -f 10 ``` 该命令从 `ifconfig` 输出中提取 `eth0` 网卡的 IP 地址。 #### 提取本地系统的用户名 ```bash cat /etc/passwd | cut -d : -f 1 ``` 此命令将提取 `/etc/passwd` 文件中所有用户的用户名[^4]。 #### 统计本地用户数 ```bash cat /etc/passwd | cut -d : -f 1 | wc -l ``` 该命令先提取用户名,再使用 `wc -l` 统计用户数量。 #### 打印文本最后的 5 个字符 ```bash echo "abcdefghij" | cut -c -5 ``` 此命令将输出字符串的最后 5 个字符。 ### 注意事项 - cut 只擅长处理“以一个字符间隔”的文本内容,如果文件里某些域由若干个空格间隔,使用 cut 会比较麻烦[^4]。 - 分隔符必须是单个字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值