尝试使用grep查找内容,然后输出该行的不同部分

时间:2015-02-15 01:11:37

标签: linux search grep output

比方说,我正在搜索这样的一行:

颜色asdf

我使用grep来查找该行,例如grep asdf file.txt 然后我如何显示颜色?学习linux很难。

4 个答案:

答案 0 :(得分:1)

使用命令行工具sed,您可以使用正则表达式替换stings:

echo "Color asdf" | sed 's/\([^ ]*\).*/\1/'

这部分:\([^ ]*\).*是一个正常的表达。正则表达式的第一部分:[^ ]*,尽可能多地匹配除空格之外的任何字符,并且在变量中捕获\(\)之间的字符{ {1}}。然后,您还会将字符串的剩余部分与\1匹配,并使用.*在{{的替换部分中使用\([^ ]*\)来仅替换所有这些部分。 1}}命令。

这里有一些关于sed的更多信息: http://linux.about.com/od/commands/a/Example-Uses-Of-Sed-Cmdsedxa.htm

答案 1 :(得分:0)

您可以使用sed

sed -n 's/[[:space:]][[:space:]]*asdf$//p' file.txt

详细说明:

  • -n选项告诉sed不要自动打印模式空间。基本上,除非你告诉它,它不输出任何东西。
  • s的{​​{1}}命令替换文字。这里,如果一行以sed结尾,前面至少有一个空白字符,我们将所有内容替换为空,然后打印该行(注意asdf末尾的p标志命令)。只有在实际更换了某些东西时才会进行打印。有关s命令的更多信息,请参阅e。 G。在GNU sed manual
为清晰起见,

编辑:使用单引号时,参数扩展不起作用,因此不会替换变量。要使用变量,请使用双引号:

s

答案 2 :(得分:0)

如果您真的想在这里使用grep,可以将grep的输出传输到cut

grep -h asdf *.txt | cut -s -d  -f 1

请注意-d选项cut之后必须有两个空格 - 第一个告诉cut使用空格作为字段分隔符(我假设你的字段以空格分隔而不是制表符分隔),而第二个字段将-d选项与以下选项(-f)分开。

但是,是的,sedawk可能是你的朋友......: - )

答案 3 :(得分:0)

您可以使用grep

在线条中添加图案
grep --colour -o 'asdf' file.txt

编辑:-o选项将仅打印模式