2011-12-16 25 views

回答

1

好了,我们有一些文字

$> cat ./text 
text 
some text 
string1 
some text again 
and that 
string2 
done 
this should not be printed 

我们希望能够得到字符串1字符串2之间的界线。所以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 
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编写的命令行文本搜索工具。

+0

我需要命令可以从实用程序中搜索到书面 – user1047737 2011-12-16 18:16:01

+0

您不应该对与您的问题一样含糊的问题回答投票。阅读关于如何提问的FAQ。 – 2011-12-16 18:18:18

0

您可以使用-o optiongrep实用程序。像这样的东西 -

-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:~]