Linux 中的 Pipe,Grep 和 Sort 命令
什么是 Linux 中的管道
管道是 Linux 中的一个命令,它允许你使用两个或多个命令,以便一个命令的输出作为下一个命令的输入。简而言之,每个进程的输出像管道一样直接作为输入到下一个。符号 |
表示管道。
管道可帮助你同时混合两个或多个命令并连续运行它们。你可以使用功能强大的命令,可以快速执行复杂的任务。
让我们用一个例子来理解这一点。
当你使用 cat
命令查看跨越多个页面的文件时,提示会快速跳转到文件的最后一页,而你在中间看不到内容。
为避免这种情况,你可以将 cat
命令的输出传递给 less
,这样一次只能显示一个滚动长度的内容。
cat filename | less
pg
和 more
命令
你也可以使用 pg
,而不是 less
。
cat Filename | pg
或者
cat Filename | more
这样,你可以悠闲地查看文件,只需按Enter键向下滚动即可。
$ cat Filename | more
First
Second
Third
--More--
grep
命令
假设你要从文本文件中搜索特定的邮政编码,当然你可以自己手动浏览内容以查找信息。但更好的选择是使用 grep
命令。它将扫描文档以获取所需信息,并以你想要的格式显示结果。
grep search_string
举个例子,
$ cat testfile | grep Monday
Monday
在这里,grep
命令搜索文件 testfile
,搜索字符串 Monday
。
以下选项可与此命令一起使用。
选项 | 功能 |
---|---|
-v |
显示与搜索到的字符串不匹配的所有行 |
-c |
仅显示匹配行的数量 |
-n |
显示匹配的行及其编号 |
-i |
匹配时不区分大小写 |
-l |
仅显示含有字符串的文件名 |
让我们试一下在同一个文件上面使用第一个选项 -i
,
使用 -i
选项,grep
已从所有行中过滤出字符串 a
(不区分大小写)。
$ cat testfile | grep -i a
Apple
Banana
Goat
sort
命令
此命令有助于按字母顺序排序文件内容。
该命令的语法是:
sort Filename
比如文件 abc
的内容是,
dishan@vultr:~$ cat abc
a
b
c
d
e
使用 sort
命令
dishan@vultr:~$ sort abc
a
b
c
d
e
这个命令的选项如下,
选项 | 功能 |
---|---|
-r |
反转排序 |
-n |
按数字排序 |
-f |
不区分大小写的排序 |
下面的例子将文件 abc
中内容反向排序。
dishan@vultr:~$ sort - r abc
e
d
c
b
a
什么是过滤器?
Linux 有很多过滤命令,如 awk
、grep
、sed
、spell
和 wc
。过滤器从一个命令获取输入,进行一些处理,并给出输出。
当你管道两个命令时,第一个命令的过滤输出将被赋予下一个命令。
让我们借助一个例子来理解这一点。
文件 sample
的内容是,
dishan@vultr:~$ cat sample
Cat
Tiger
Apple
Poes
Banana
Drink
我们想列出不包含字符 a
的行,但结果按反顺排列。
为此,可以使用以下语法。
cat sample | grep -v a | sort - r
让我们看看结果。
dishan@vultr:~$ cat sample | grep -v a | sort - r
Drink
Poes
Tiger
Poes
复习:
- 管道
|
发送一个命令的输出作为另一个命令的输入。 - 过滤器从一个命令获取输入,进行一些处理,并给出输出。
grep
命令可用于在文本文档中查找字符串和值- 通过
grep
的管道是最常用的用法之一 sort
命令按字母顺序排序文件内容less
,pg
和more
命令用于将长文件分成可读位