Grep 或字符串的一部分



大家好,

文件名可以是

  1. abc_source_201501.csv 或者,
  2. abc_source2_201501.csv

是否可以在不完全列出文件名的情况下执行类似grep abc_source|source2_201501.csv的操作,因为我正在使用的文件名比获得两个选项的示例要长得多?

感谢您在这里的帮助。

在 grep 中使用扩展正则表达式标志。

例如:

grep -E abc_source.?_201501.csv

将在您的示例中提供两行。您可以考虑更适合您的数据的其他正则表达式模式。

您可以使用 Bash 通配来一次在多个文件中进行 grep。

例如,要在文件名以 abc_source 开头并以 201501.csv 结尾的所有文件中对字符串"hello"进行 grep,请发出以下命令:

grep hello abc_source*201501.csv

您还可以使用 -r 标志在给定文件夹下的所有文件中递归 grep - 例如当前文件夹 (.)。

grep -r hello .

如果你问的是 shell 中文件名匹配的模式,Bash 中的扩展通配工具可以让你说

shopt -s extglob
grep stuff abc_source@(|2)_201501.csv

以使用单个 glob 表达式搜索这两个文件。

最简单的方法是使用大括号扩展:

grep pattern abc_{source,source2}_201501.csv

这与:

grep pattern abc_source{,2}_201501.csv

您可以在一个单词中使用多个大括号模式:

grep pattern abc_source{,2}_2015{01..04}.csv

扩展到

grep pattern abc_source_201501.csv abc_source_201502.csv 
             abc_source_201503.csv abc_source_201504.csv 
             abc_source2_201501.csv abc_source2_201502.csv 
             abc_source2_201503.csv abc_source2_201504.csv

相关内容

  • 没有找到相关文章

最新更新