OS X 终端 - 在以变量开头的文件中查找文本

OS X 终端 - 在以变量开头的文件中查找文本

我需要搜索文件夹中的文件并复制所有以变量开头的文本。

例如:

文件 A.txt、B.txt、C.txt 和 D.txt 分别包含字符串“Hello1”、“Hello2”、“Hello3”和“Hello4”。我需要能够搜索所有以“Hello”开头的单词并输出结果。

在这个特殊情况下,将搜索 A.txt、B.txt、C.txt 和 D.txt,输出为

Hello1
Hello2
Hello3
Hello4

我环顾四周,发现以下内容允许我导出所有包含文本的文件,但我不确定如何或是否可以适应我的需要。

grep -l Hello *.txt

答案1

你可能想要grep -ohw 'Hello[0-9]*' *.txt

  • -o仅输出行的匹配部分
  • -h禁止grep输出文件名
  • -w仅搜索grep整个单词,因此Hello1Hello2不会匹配(如果没有,则会匹配两次-w

您需要调整模式,因为文字Hello只会匹配Hello并随后输出该文字。由于您想要匹配Hello1Hello5甚至Hello123),因此您需要多个数字([0-9]*)。

不要忘记引用该模式,这样它就*不会被 shell 扩展。

答案2

这将查找以变量开头的单词。

var=Hello
grep -ho "\\<${var}[^[:blank:]]*" *.txt

grep\<是“单词开头”锚点。

我假设您的单词是用空格分隔的,因此单词的其余部分是非空白字符。您可以很容易地将其更改为数字( [0-9]*)或类似 perl 的“单词字符”( )。[[:alnum:]_]*

相关内容