Linux cut命令用于根据字段提取文件内容。文本文件没有像数据库那样的行/列,有时我们只需要单列数据。根据分隔符剪切已识别的列(例如:冒号’:’,分号’;’,逗号’,’等)。
对于下面示例,我们采用/etc/passwd文件。所有行都以下面的格式存储,冒号(:)按如下方式分隔。我们使用-f指定字段编号,使用-d作为分隔符。
按照上面的图片,这个文件有7个字段。cut还支持在字符基础suing -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
我们还可以在字段上指定带连字符( – )的列的范围以及两个选项一起,如下面的示例命令。
第一个命令将选择第1,第2,第3和第4个字段。
第二个命令将选择第3,第4和第5个字段。
最后一个命令将显示第2,第3,第4,第6和第10个字段。
# cut -d":" -f1-4 < /etc/passwd # cut -d":" -f3-5 < /etc/passwd # cut -d":" -f2-4,6,10 < /etc/passwd
要获取除一个列之外的所有列的值,需要使用以下命令。例如,如果我们需要选择所有列而不是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
本篇文章到这里就已经全部结束了,