Linux的cut命令用于提取文件内容。文本文件不能像数据库一样行/列操作,有些时候我们只需要一列的数据。以分割符基础上剪切标识的列(如:冒号“:”,分号“;”,逗号“,”等)。 在这个例子中,我们正在获取
/etc/passwd 文件
中 。所有的行存储如下面冒号格式(:)分隔,像的下方例子。我们使用 -f 指定行数和 -d 为分隔符(分隔符)。
按照上面的截图,这个文件有7个字段。Cut 还支持字符为基础使用 -c 命令提取值。让我们阅读下面的例子,为此我使用
/etc/passwd 文件来测试。
1.选择单个字段从文件
例如,我们需要从我们的 /etc/passwd 文件中取出用户名列表。我们知道,第一列存储的用户名,整个文件是由冒号(:)分隔。
# cut -d":" -f1 < /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
我们也可以使用管道“|”传递文件内容输入到 cut 命令,如下图所示
# cat /etc/passwd | cut -d":" -f1
2.选择文件中的多个列
我们可以指定多个字段名,如下面的例子将显示第1,2,7 列字段。
# cut -d":" -f1,2,7 < /etc/passwd
root:x:/bin/bash
bin:x:/sbin/nologin
daemon:x:/sbin/nologin
adm:x:/sbin/nologin
lp:x:/sbin/nologin
sync:x:/bin/sync
shutdown:x:/sbin/shutdown
halt:x:/sbin/halt
mail:x:/sbin/nologin
uucp:x:/sbin/nologin
我们也可以指定列的连字符范围内( - )的字段,以及两个选项的在一起,就像下面的例子命令。
要获得所有列的值,除了使用下面的命令。例如,如果我们需要选择所有列,但要第6列。
# cut -d":" --complement -s -f6 < /etc/passwd
3.选择单个字符的从文件
除了字段我们也可以从文件中取单个字符选择值,而使用字符我们并不需要指定分割符。
# cut -c1 < /etc/passwd
r
b
d
a
l
s
s
同样的字段,我们也可以指定多个逗号分隔的字符或字符范围。
# cut -c1,2,3,6,7 < /etc/passwd
# cut -c1-3,6,7 < /etc/passwd