如何在某些文字中使用grep从 line1 到 line2 选择行?
答案 0 :(得分:1)
使用sed(为清晰起见,分成两行)。
echo "grep is a command-line text-search utility originally written for Unix." \
| sed -n 's/.*\(utility originally written\).*/\1/p'
这是做什么的:
-n
参数禁止打印所有行。s
命令开始替换表达式。/
和第二个/
之间的部分描述了您要查找的内容。
.*
表示“任何事情”\(utility originally written\)
正是您在寻找的,在两个转义的括号之间,说这是我们以后可以反对引用的表达式。.*
再次表示“任何事情”/
和第三个/
之间的部分是替换表达式。
\1
说“使用第一部分括号中的第一个表达式”p
表示“打印出匹配的替代品。”修改:作为参考,原始问题(由于某种原因,它没有显示任何修改)如下所示。对于我的生活,我不知道他为什么让它变得更糟,更不具体。
如何使用grep从一行到另一行查找文本
让我说我只想要从“最初编写的实用程序”grep 以下文字。我怎样才能做到这一点?请帮忙
grep是一个最初编写的命令行文本搜索实用程序 的Unix。
答案 1 :(得分:1)
好吧,我们有一些文字
$> cat ./text
text
some text
string1
some text again
and that
string2
done
this should not be printed
我们希望获得 string1 和 string2 之间的界限。因此,awk
是可以在那里使用的最佳工具。
$> cat ./btw
/string1/ { printing = 1 }
/string2/ { print $0; printing = 0 }
printing { print $0 }
用法:
$> awk -f ./btw ./text
string1
some text again
and that
string2
答案 2 :(得分:0)
您可以使用-o option
实用程序grep
。像这样的东西 -
-o, --only-matching
Show only the part of a matching line that matches PATTERN.
[jaypal:~] echo "grep is a command-line text-search utility originally written\
for Unix."| grep -o "utility originally written"
utility originally written
[jaypal:~]