64

我在 Linux 中有一个文件,我想在该文件中显示包含特定字符串的行,该怎么做?

4

5 回答 5

106

执行此操作的常用方法是 with grep,它使用模式来匹配行:

grep 'pattern' file

将输出与模式匹配的每一行。如果您只想搜索固定字符串,请使用grep -F 'pattern' file.

于 2012-08-03T14:32:28.410 回答
14

此外grep,您还可以使用其他实用程序,例如awksed

这里有几个例子。假设您要is在名为GPL.

您的示例文件

user@linux:~$ cat -n GPL 
     1    The GNU General Public License is a free, copyleft license for
     2    The licenses for most software and other practical works are designed
     3  the GNU General Public License is intended to guarantee your freedom to
     4  GNU General Public License for most of our software;
user@linux:~$ 

1. grep

user@linux:~$ grep is GPL 
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

2.awk

user@linux:~$ awk /is/ GPL 
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

3.sed

user@linux:~$ sed -n '/is/p' GPL
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

希望这可以帮助

于 2018-10-25T07:05:48.833 回答
9

/tmp/我的文件

first line text
wanted text
other text

命令

$ grep -n "wanted text" /tmp/myfile | awk -F  ":" '{print $1}'
2

切换到 grep 会在-n任何匹配的行前面加上行号(后跟:),而第二个命令使用冒号作为列分隔符 ( -F ":") 并打印出任何行的第一列。最终结果是匹配的行号列表。

于 2016-06-23T05:09:13.683 回答
8

grep系列命令(包括 egrep、fgrep)是解决此问题的常用解决方案。

$ grep pattern filename

如果您正在搜索源代码,那么ack可能是一个更好的选择。它会自动搜索子目录并避免您通常不会搜索的文件(对象、SCM 目录等)

于 2012-08-03T14:36:04.180 回答
1

将长格式的队列作业信息写入文本文件

qstat -f > queue.txt

Grep 作业名称

grep 'Job_Name' queue.txt

于 2020-07-29T09:45:10.703 回答