如何使用grep

时间:2017-08-24 12:39:09

标签: linux bash awk sed grep

我想使用grep或awk或sed打印匹配的字符串以及匹配的行,最好是grep,因为我想在一个巨大的文件上执行它,grep给了我最好的时间。

例如: 如果我想匹配'你好' 然后使用命令grep 'hello' filename,我得到结果:echo hello World

使用命令:grep -o 'hello' filename,我可以得到结果:

hello

无论如何我可以得到结果:

echo hello World , hello

或类似于此。 帮助将不胜感激

修改

你好只是一个例子,它可以是一个从文件中取出的变量,因此它不是静态的,如果我们有多个匹配,那么所有这些都应该被追加。

编辑2

作为早期编辑的示例,请考虑具有内容

的文件关键字
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 

3 个答案:

答案 0 :(得分:1)

我会使用awk

awk -v OFS=' , ' 'match($0,/PATTERN/){print substr($0,RSTART,RLENGTH),$0}' file

请参阅awk manual match()

答案 1 :(得分:1)

sed 方法:

假设我们的文件testfile包含内容:

dfdsgg
echo hello World
dfget2rfd hel
sdfs hello .. hello again
ssdf h3tgdfg
sed -n 's/.*\(hello\).*/&, \1/p' testfile

输出:

echo hello World, hello
sdfs hello .. hello again, hello

答案 2 :(得分:-1)

您可以合并grepawk。例如:

~$ echo "hello world" | grep hello |  awk '{ printf "%s , %s", $0, "hello" }; END { printf "\n" }'
hello world , hello

当然,您需要使用grep来处理无法匹配的情况。

我不确定你想要实现的目标,但看起来awk会帮助你。