Linux look命令遍历一个文件并列出以特定单词或短语开头的所有行。但是小心!它在不同的Linux发行版上表现不同。本教程将向您展示如何使用它。
对于一个简单但有用的命令,look在我研究这篇文章的时候确实给了我一个很好的解释。有两个问题:兼容性和文档。
本文是使用Ubuntu、Fedora和Manjaro检查的。look与这些发行版捆绑在一起,非常棒。问题是这三种情况下的行为都不一样。Ubuntu的版本非常不同。根据Ubuntu手册页,行为应该是相同的。
我终于明白了。look传统上使用二进制搜索,而ubuntulook使用线性搜索。在线Ubuntu手册页上的Bionic Beaver(18.04)、Co**ic cutlefish(18.10)和Disco Dingo(19.04)都说Ubuntu版本使用了二进制搜索,但事实并非如此。
如果我们看一下本地的Ubuntu手册页,就会清楚地看到他们的外观使用了线性搜索。有一个命令行选项强制它使用二进制搜索。其他发行版中的两个版本都没有选择搜索方法的选项。
man look向下滚动浏览手册页,我们会看到一节描述了使用线性搜索而不是二进制搜索的look的这个版本。
这个故事的寓意是先查看当地的手册页。
二进制搜索方法比线性搜索更快更有效。处理大文件使这一点非常明显。二进制搜索的缺点是必须对文件进行排序。如果不想对文件进行排序,请对其副本进行排序,然后将其与look一起使用。
我们将在本文的其他地方对此进行演示。请注意,在Fedora、Manjaro和我所期望的大多数Linux世界中,您需要创建一个文件的排序副本并使用它。
look可以处理您选择的任何文本文件,也可以处理本地词典文件“words”
在Manjaro上,您需要安装“words”文件。使用此命令:
sudo pacman -Syu words在本文中,我们将使用爱德华·李尔的诗歌《大杂烩》的文本文件
让我们用这个命令来看看它的内容:
less the-jumblies.txt这是诗的第一部分。请注意,我们使用的是Ubuntu,因此该文件仍然未排序。对于Fedora和Manjaro,我们将使用文件的排序副本,这将在本文后面介绍。
如果我们寻找以“They”开头的行,我们就会发现Jumblies做了些什么。
look They the-jumblies.txtlook通过列出以下行来响应:
要使look忽略大小写之间的差异,请使用-f(忽略大小写)选项。我们又用了“they”作为搜索词,但这次是小写的。
look -f they the-jumblies.txt这一次,结果包括一个额外的行。
在最后一组结果中,以“THEY”开头的那行没有出现,因为它是大写的,与我们的搜索词“THEY”不匹配
忽略case允许look将其包含在结果中。
如果您的Linux发行版的look版本遵循使用二进制搜索的传统行为,那么您必须对文件进行排序,或者使用已排序的文件副本。
让我们重复搜索“他们”的命令,但这次是在Manjaro上。
如您所见,没有返回任何结果。但我们知道诗中有几行是以“他们”开头的
我们把文件整理一下。如果要在look中使用-f(忽略大小写)或-d(仅限字母数字字符和空格)选项,则在对文件排序时必须使用它们。
-o(output)选项允许您指定排序行应添加到的文件的名称。在这个例子中,它是“排序.txt.”
sort -f -d the-jumblies.txt -o sorted.txt让我们看看排序.txt文件,然后使用-f和-d选项。
现在,我们得到了预期的结果。
要使look忽略任何不是字母数字字符或空格的内容,请使用-d(字母数字)选项。
让我们看看有没有以“哦”开头的词
look -f oh the-jumblies.txtlook不返回任何结果。
让我们再试一次,告诉look忽略除字母数字字符和空格以外的任何内容。这意味着字符和符号,如标点符号,将被忽略。
look -f -d oh the-jumblies.txt这一次,我们得到了一个结果。我们以前没有找到这一行,因为引号和感叹号混淆了搜索。
您可以告诉look使用特定字符作为终止字符。通常,空格和行尾用作终止字符。
t(终止字符)选项允许我们指定要使用的字符。在这个例子中,我们将使用撇号字符。我们需要用反斜杠引用它,这样look就知道我们没有打开字符串。
我们引用搜索词也是因为它包含空格。我们在找两个词。
look -f -t \' "they call" the-jumblies.txt结果与搜索项匹配,以我们用作终止字符的撇号结尾。
如果没有在命令行中提供文件名,look将使用file这个词。
命令:
给出以下结果:
这些都是文件中以“圆”开头的单词
就这些了。
一旦您知道在不同的Linux发行版中有不同的行为,并且您已经了解了您的版本是使用二进制搜索还是线性搜索,这就非常容易了。
... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...
...许您在Android设备上安装诚实善良的Linux应用程序。下面是如何使用Termux应用程序。 ...
... 如何在windows10上安装linux bash shell ...
要在Linux中重命名文件吗?如果您知道如何在Windows、macOS或Chrome操作系统中完成这项工作,那么您就知道如何在这里完成这项工作。在大多数版本的Linux上,您只需右键单击一个文件并选择Rename选项。 ...
想在Linux系统上添加用户但不知道如何添加?在Linux上使用命令行界面管理用户无疑是一项复杂的工作。而对于初学者来说,即使添加新用户也是一场噩梦。 ...
...已配置的系统,与其他计算机共享,或者只保存备份。 如何工作 导入和导出功能是在2019年5月的Windows10版本1903更新中添加的。如果尚未安装,则无法使用这些命令行选项。 您只需要为Windows wsl命令提供两个新选项:--export和--i...
...些指南汇总到一个大列表中。 windows上linux入门 相关:如何在windows10上安装和使用Linux Bash Shell 您可以在任何版本的windows10(包括windows10home)上安装Linux环境和bashshell。但是,它确实需要64位版本的Windows10。您只需启用Windows Subs...
...改这些凭据。 用户帐户在linux环境中的工作方式 相关:如何在windows10上安装和使用Linux Bash Shell 当您通过在安装后启动新的Linux发行版来设置它时,系统会要求您为bashshell创建一个用户帐户。Windows将其称为“UNIX用户帐户”。因...