使用Linux Cut命令从文件中抓住部分线

cut命令提供了许多从文本文件中提取每行内容的方法。它在某些方面与awk相似,但它有自己的优点和特点。

无缝剪刀背景140057589
Thinkstock.

在Linux系统上,有一个非常简单的命令可以获取文本文件中每一行的一部分减少。它有效哎呀在此之内,它允许您只选择要从文件中查看的内容,使您能够提取字段(无论使用的分隔符),字符或字节。检查减少,你可以这样问它的版本:

$ Cuts -Version Cut(GNU Coreutils)8.32版权所有(c)2020自由软件Foundation,Inc。许可GPLv3 +:GNU GPL版本3或更高版本。这是免费软件:您可以自由更改和重新分配它。法律允许的范围内没有保修。由David M. Ihnat,David Mackenzie和Jim Meyering撰写。

选择旁边

为了演示cut命令如何工作,我们首先使用示例“cities”文件运行命令,该文件以制表符分隔的格式包含美国最大城市的详细信息。这个文件中的行如下所示:

$ head -5城市排名名称州2021 Pop. 2010人口普查变化密度(平方)面积(平方)1纽约市纽约8,230,290 8,190,210 4,083 300 2加利福尼亚州洛杉矶市3,983,540 3,795,510 1,266 469 3伊利诺伊州芝加哥2,679,080 2,697,480 1,756 227 4得克萨斯州休斯顿2,323,660 2,100,280 541 640

要从这个文件中选择一个特定的字段,可以使用如下命令显示第4个字段:

$ CUT -F 4城市|HEAD -11 2021 POP。8,230,290 3,983,540 2,679,080 2,323,660 1,733,630 1,58,010 1,581,730 1,347,120 1,011,790

要将城市名称添加到您的选择中,您需要选择第2和第4个字段。属性的默认分隔符是制表符减少命令,它可以轻松提取这些字段。

$削减-f2,4城市|head -11名称2021流行音乐。纽约8,230,290洛杉矶3,983,540芝加哥2,323,660凤凰1,733,630费城1,585,010圣安东尼奥1,581,730圣地亚哥1,581,730圣地亚哥1,347,720达拉斯1,347,120奥斯汀1,011,790

字符串-f1-4将显示文件中的前四个字段:

$削减-f1-4城市|head -5等级名称状态2021 POP。1纽约市纽约纽约8,230,290 2洛杉矶加利福尼亚州3,983,540 3芝加哥伊利诺伊州2,679,080 4休斯顿德克萨斯2,323,660

要指定不同的分隔符,可以添加-D.选项并使用像这样的命令,从而从中取出用户名/ etc / passwd文件:

$ Cut -d:-f 1 / etc / passwd |头-10根箱守护程序ADM LP Sync Sh​​utdown Halt Mail运算符

要选择同时查看登录名和分配的shell,请尝试如下操作:

$ cut -d: -f 1,7 /etc/passwd | head -10 root:/bin/bash bin:/sbin/nologin daemon:/sbin/nologin adm:/sbin/nologin lp:/sbin/nologin sync:/bin/sync shutdown:/sbin/shutdown halt:/sbin/halt mail:/sbin/nologin operator:/sbin/nologin

上面的命令选择第1和第7个字段。

要计算使用每种shell的帐户数量,可以使用如下命令:

$ cut -d: -f 7 /etc/passwd | sort | uniq -c 17 /bin/bash 1 /bin/sync 1 /sbin/halt 44 /sbin/nologin 1 /sbin/shutdown 1 /usr/sbin/nologin . txt

请注意,由于它们已分配了多少帐户无法登录/sbin/nologin壳。当然,这些是与系统服务相关联的帐户。

选择的单词

你也可以使用减少命令从文件中选择单个和多个单词或字符串。只要记住,如果单词或字符串是分隔符,则需要指定分隔符不是用标签分开。下面的两个命令显示了每行的不同量。第一个(由空白分隔)显示第一个字段。第二个(由逗号分隔)将所有文本显示为第一个逗号。

$ cut -d, -f1 addresses 7610 6803 1089 3833 Abingdon Circle(阿宾顿环路

如果我们在不指定分隔符的情况下要求第一个字段,我们会在任何由选项卡未分隔的文件中看到整行。

$ cut -f1地址:7610 West Park Drive, Hyattsville, MD 20783 6803 Gravel Branch Rd, Hurlock, MD 21643 1089 Plymouth Drive, Rahway, NJ 07065 3833 Abingdon Circle, Norfolk, VA 23513

按字符选择

要使用字符范围选择行,你可以这样做:

$ cut -c1-3平日太阳星期一星期三星期三星期五星期五

这将显示列出一周天的文件的前三个字母。

按字节选择

你可以问减少按字节进行选择。除非数据文件中包含的字符占用一个字节以上,否则不会看到任何差异。在本例中,我们可能会看到不同之处,因为£符号占用了两个字节。

$ cut -b1-23 cost那块饼干花了我2英镑

在上面的第一个命令中,响应显示了一个圆点块,因为它只查看£符号的第一个字节。在第二种方法中,我们根据字符进行选择,因此它使用两个字节。我们也可以这样做,增加一个字节:

$ Cut -b1-24成本饼干花费我2£

扭转您的要求

您还可以选择一个选项来反转您的输出减少请求。这并不是说要倒序显示,而是说“反其道而行之”。从文件中选择前四个字符是一回事。选择所有字符,但这些字符是它的“补充”。这里有一个例子:

$ cut -b1-4 addresses 7610 6803 1089 3833 MD 20783 Gravel Branch Rd, Hurlock, MD 21643 Plymouth Drive, Rahway, NJ 07065 Abingdon Circle, Norfolk, VA 23513

总结

减少命令为选择文件中每一行的部分提供了很大的灵活性。有关它的许多选项的更多信息,请参阅手册页。

加入网络世界社区有个足球雷竞技appFacebookLinkedIn评论是最重要的主题。
相关:

版权©2021Raybet2

SD-WAN采购商指南:要询问供应商(和您自己)的关键问题