grep 是一个强大的文本搜索工具,在命令行中常用于查找匹配指定模式的文本行。以下是一些常用的 grep 命令示例:
  • 在文件中查找匹配模式的行:grep "pattern" filename,这将在指定的文件中查找包含匹配 "pattern" 的行,并将其打印出来。
  • 忽略字母大小写进行匹配:grep -i "pattern" filename,使用 -i 选项,可以忽略匹配时的字母大小写。
  • 显示匹配行的行号:grep -n "pattern" filename,使用 -n 选项,可以显示匹配行的行号。
  • 只显示匹配的部分:grep -o "pattern" filename,使用 -o 选项,只显示匹配到的部分文本,而不是整行。
  • 递归搜索目录中的文件:grep -r "pattern" directory,使用 -r 选项,可以递归地在指定目录及其子目录中搜索匹配模式的文件。
  • 排除匹配模式的行:grep -v "pattern" filename,使用 -v 选项,可以显示不包含匹配模式的行。

 

这些是 grep 命令的一些常用选项和用法。你可以根据实际需求,结合这些选项来使用 grep 进行文本搜索和匹配。

 

例子:

1. 筛选file1中匹配字符串1或字符串2的3000行数据,添加到file2文件末尾

要筛选file1中匹配字符串1或字符串2的前3000行数据,并将其添加到file2文件末尾,您可以使用grephead命令结合重定向操作来实现。

以下是一个示例命令:

grep -e 'string1' -e 'string2' file1 | head -n 3000 >> file2

解释一下这个命令的每个部分:

  • grep:用于在文件中搜索匹配的行。
  • -e 'string1' -e 'string2':使用-e选项和字符串1、字符串2作为模式。您可以根据需要添加或修改模式。
  • file1:要搜索的文件。
  • |:管道操作符,将grep的输出传递给下一个命令。
  • head:用于截取输出的前n行。
  • -n 3000:指定截取的行数为3000行。
  • >>:重定向并追加到文件末尾。
  • file2:输出结果追加到的文件。

使用这个命令,它将从file1中筛选出匹配字符串1或字符串2的前3000行数据,并将结果追加到file2文件末尾。请确保将string1和string2替换为您实际需要筛选的字符串,并将file1和file2替换为您实际使用的文件名。

 

2. 筛选file1中不匹配字符串1或字符串2的行输出到file2

grep -v -e 'string1' -e 'string2' file1 > file2

解释一下这个命令的每个部分:

  • grep:用于在文件中搜索匹配的行。
  • -v:输出不匹配的行。
  • -e 'string1' -e 'string2':使用-e选项和字符串1、字符串2作为模式。您可以根据需要添加或修改模式。

3. 将符合string1和string2的行写入file2末尾

 

grep -E "string1.*string2" file1 >> file2

 

4. 输出file1存在,file2不存在的行

您可以使用bash中的一些工具来实现这个任务。一个常见的方法是使用grep命令结合输入重定向和命令替换来实现。

以下是一个示例命令:

grep -Fxvf file2 file1

解释一下这个命令的每个部分:

  • grep:用于在文件中搜索匹配的行。
  • -F:指定搜索的模式是固定字符串,而不是正则表达式。
  • -x:仅匹配整行。
  • -v:输出不匹配的行,即file1存在但file2中不存在的行。
  • -f file2:指定用于搜索的文件模式,这里是file2。
  • file1:要搜索的文件。

使用这个命令,它将输出file1中存在但file2中不存在的行。请确保将file1和file2替换为您实际使用的文件名。

 

bash 提取文件中以abc开始以yz结尾的中间部分字符串,并对这部分字符串进行分组计算数量

grep -o 'abc.*yz' your_file.txt | sed -e 's/^abc//' -e 's/yz$//' | sort | uniq -c

 

搜索并显示“Total”所在的行:

 grep -rn "Total"

 

posted on 2023-06-23 16:28  风生水起  阅读(84)  评论(0编辑  收藏  举报