使用Linux cut命令从文件中获取部分行

CUT命令提供了许多方法,可以从文本文件中提取每行的部分。它与某种方式类似于Awk,但它有自己的优势和怪癖。

无缝剪刀背景140057589
思想库

一个令人惊讶的简单命令,用于抓住Linux系统上的文本文件中的每一行的一部分.它的工作原理是awk因为它允许您只选择您想从文件中看到的内容,从而允许您提取字段(不管使用的分隔符是什么)、字符或字节。检查,您可以询问它的版本,如下所示:

版权所有(C) 2020 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3或更高版本。这是自由软件:你可以自由地更改和重新发布它。在法律允许的范围内,不存在担保。作者:David M. Ihnat, David MacKenzie和Jim Meyering

选择的字段

为了说明Cut命令如何工作,我们将首先使用包含选项卡分隔格式的示例“城市”文件运行命令,其中包含美国最大城市的详细信息。此文件中的行看起来像如下所示的内容:

$ head -5 cities等级名称状态2021 POP。2010年人口普查(Mi²)区域(mi²)1,纽约纽约纽约纽约纽约3003洛杉矶5,200,200,2100

要从此文件中选择特定字段,您可以使用像这样的命令,该命令显示第4个字段:

2021 Pop. 8,230,290 3,983,540 2,679,080 2,323,660 1,733,630 1,585,010 1,581,730 1,427,720 1,347,120 1,011790

要将城市名称添加到您的选择中,您将选择第2个和第4字段。由于标签字符是默认分隔符命令,它很容易提取这些字段。

$ cut -f2,4个城市| head -11 Name 2021 Pop纽约市8,230,290洛杉矶3,983,540芝加哥2,679,080休斯顿2,323,660菲尼克斯1,733,630费城1,585,010圣安东尼奥1,581,730圣地亚哥1,427,720达拉斯1,347,120奥斯汀1,011790

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

$ cut -f1-4个城市| head -5 Rank Name State 2021 Pop. 1纽约市纽约8230,290 2洛杉矶市加利福尼亚州3983,540 3芝加哥伊利诺伊州2679,080 4休斯敦德克萨斯州233,660

要指定不同的分隔符,可以添加- d选项,并使用如下命令,从/ etc / passwd文件:

$ cut -d: -f 1 /etc/passwd | head -10 root bin daemon adm lp sync shutdown halt邮件操作符

要选择查看登录名和分配的shell,请尝试为此:

$ CUT -D:-f 1,7 / etc / passwd |Head -10 Root:/ Bin / Bash Bin:/ Sbin / Nologin守护进程:/ Sbin / Nologin Adm:/ Sbin / Nologin LP:/ Sbin / Nologin Sync:/ Bin / Sync Sh​​utdown:/ Sbin / Shutdown Halt:/ Sbin /暂停邮件:/ sbin / nolin算子:/ sbin / nologin

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

要计算许多帐户使用每个shell,请使用这样的命令:

$ Cut -d:-f 7 / etc / passwd |排序|UNIQ -C 17 / BIN / BASH 1 / BIN / SYNC 1 / SBIN / HALT 44 / SBIN / NOLOGIN 1 / SBIN / SHUTDOMN 1 / USR / SBIN / NOLOLIN

注意有多少账户无法登录,因为他们被分配了/ sbin / nologin壳。当然,这些都与系统服务相关联。

通过单词选择

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

$ cut -d''-f1地址7610 6803 1089 3833 $ cut -d,-f1地址7610西部公园驾驶6803碎石店Rd 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

选择的字符

要使用字符范围选择行,您可以执行类似的操作:

削减c1-3美元工作日,星期日,星期一,星期二,星期三,星期五,星期六

这将显示列出星期几的文件每行的前三个字母。

选择的字节

你可以问按字节选择。除非您的数据文件包括占用多个字节的字符,否则您不会看到任何差异。在此示例中,我们可能会看到差异只是因为签名占用了两个字节。

$削减-b1-23成本饼干花费我2¼$ cut-c1-23成本饼干花费我2£

在上面的第一个命令中,响应显示显示了一个点块,因为它仅查找£符号的第一个字节。在第二个中,我们按字符选择,所以它使用两个字节。我们也可以刚刚完成此方法并添加更多字节:

那块饼干花了我两英镑

扭转你的请求

您还可以选择选项以从您的撤消输出要求。这并不意味着以相反的顺序显示它,但意味着“执行相反”。从文件中选择前四个字符是一件事。选择一切,但这些字符是其“补充”。这是一个例子:

$ Cut -B1-4地址7610 6803 1089 3833 $ Cut  - 符合-Cl-3-4地址West Park Drive,Hyattsville,MD 20783 Gravel Branch Rd,Hurlock,MD 21643 Plymouth Drive,Rahway,NJ 07065 Abingdon Circle,诺福克,诺福克,诺福克23513

包起来

命令为在文件中选择每行的部分提供了很多灵活性。有关其许多选项的更多信息,请参阅“手册”页面。

加入网络世界社区足球竞猜app软件脸谱网linkedin.对自己最关心的话题发表评论。
有关的:

版权所有©2021.足球竞彩网下载

SD-WAN买家指南:向供应商(和您自己)提出的关键问题