比方说,我正在搜索这样的一行:
颜色asdf
我使用grep来查找该行,例如grep asdf file.txt 然后我如何显示颜色?学习linux很难。
答案 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
)分开。
但是,是的,sed
或awk
可能是你的朋友......: - )
答案 3 :(得分:0)
您可以使用grep
在线条中添加图案grep --colour -o 'asdf' file.txt
编辑:-o选项将仅打印模式