我想使用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
答案 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)
您可以合并grep
和awk
。例如:
~$ echo "hello world" | grep hello | awk '{ printf "%s , %s", $0, "hello" }; END { printf "\n" }'
hello world , hello
当然,您需要使用grep
来处理无法匹配的情况。
我不确定你想要实现的目标,但看起来awk
会帮助你。