【发布时间】:2017-08-24 12:39:08
【问题描述】:
我想使用 grep 或 awk 或 sed 打印匹配的字符串以及匹配的行,最好使用 grep,因为我想在一个大文件上执行此操作,而 grep 给了我最好的时间。
例如:
如果我想匹配“你好”
然后使用命令:grep 'hello' filename,我得到结果:echo hello World
使用命令:grep -o 'hello' filename,我可以得到结果:
hello
无论如何我都能得到结果:
echo hello World , hello
或类似的。 帮助将不胜感激
编辑
你好只是一个例子,它也可以是一个从文件中获取的变量,因此它不是静态的,如果我们有多个匹配,那么它们都应该被附加。
编辑 2
作为前面编辑的一个例子,考虑一个文件keywords,它有内容
hello
why
我们还有另一个文件,我们将在其中检查这些关键字 testfile,其中包含内容
this line contains hello world
this line contains why hello world
所以当我们运行 grep 时,我们可以得到如下答案:
描述|正则表达式(标记为 grep 结果),
this line contains hello world|hello
this line contains why hello world|hello,why
【问题讨论】:
-
您能否说明预期的输出?
-
grep 进行基于行的匹配,一行可以匹配模式多次,在这种情况下你会打印什么?您想将 regex 模式(
hello也是 regex)或 行中的匹配部分附加到输出? -
hello 只是一个例子,它也可以是从文件中获取的变量,因此它不是静态的,如果我们有多个匹配,那么所有这些都可以附加、匹配部分或只是正则表达式 I think 可以用 -F 简单解决
-
@AklankJain 你能告诉我们一些预期的输出吗?
-
@xtonousou 我在描述中添加了一个示例