尝试使用 grep 查找内容,然后输出该行的不同部分
Trying to use grep to find something, then output a different part of the line
例如,我正在搜索这样的一行:
颜色 asdf
然后我使用 grep 来查找该行,例如 grep asdf file.txt
我将如何显示颜色?学习linux很难。
你可以使用 sed
:
sed -n 's/[[:space:]][[:space:]]*asdf$//p' file.txt
详情:
-n
选项告诉sed
不要自动打印模式space。基本上,除非你告诉它,否则它不会输出任何东西。
sed
的s
命令替换文本。在这里,如果一行以 asdf
结尾,前面至少有一个白色 space 字符,我们将所有字符替换为空,然后打印该行(注意末尾的 p
标志s
命令)。只有当某些东西被实际替换时,打印才会完成。有关 s
命令的更多信息,请参见 e。 G。在 GNU sed manual.
编辑 为清楚起见:使用单引号时,参数扩展不起作用,因此不会替换变量。要使用变量,请使用双引号:
search=asdf
sed -n "s/[[:space:]][[:space:]]*${search}$//p" file.txt
使用命令行工具 sed
您可以使用正则表达式替换字符串:
echo "Color asdf" | sed 's/\([^ ]*\).*//'
这部分:\([^ ]*\).*
是一个正则表达式。正则表达式的第一部分:[^ ]*
,尽可能多次匹配除 space 之外的任何字符,并且 \(
和 \)
之间的字符被捕获到变量 </code>。然后,您还将字符串的其余部分与 <code>.*
匹配,并通过在 sed
命令。
这里有一些关于 sed 的更多信息:
http://linux.about.com/od/commands/a/Example-Uses-Of-Sed-Cmdsedxa.htm
如果您真的想在这里使用 grep
,您可以将 grep
的输出通过管道传输到 cut
:
grep -h asdf *.txt | cut -s -d -f 1
请注意 cut
的 -d
选项后必须有两个空格 - 第一个告诉 cut
使用空格作为字段分隔符(我假设你字段以空格分隔而不是制表符分隔),而第二个选项将 -d
选项与以下选项 (-f
).
分开
但是,是的,sed
或 awk
可能是您在这里的朋友...:-)
您可以使用 grep
为行中的图案着色
grep --colour -o 'asdf' file.txt
编辑:-o 选项将只打印模式
例如,我正在搜索这样的一行:
颜色 asdf
然后我使用 grep 来查找该行,例如 grep asdf file.txt 我将如何显示颜色?学习linux很难。
你可以使用 sed
:
sed -n 's/[[:space:]][[:space:]]*asdf$//p' file.txt
详情:
-n
选项告诉sed
不要自动打印模式space。基本上,除非你告诉它,否则它不会输出任何东西。sed
的s
命令替换文本。在这里,如果一行以asdf
结尾,前面至少有一个白色 space 字符,我们将所有字符替换为空,然后打印该行(注意末尾的p
标志s
命令)。只有当某些东西被实际替换时,打印才会完成。有关s
命令的更多信息,请参见 e。 G。在 GNU sed manual.
编辑 为清楚起见:使用单引号时,参数扩展不起作用,因此不会替换变量。要使用变量,请使用双引号:
search=asdf
sed -n "s/[[:space:]][[:space:]]*${search}$//p" file.txt
使用命令行工具 sed
您可以使用正则表达式替换字符串:
echo "Color asdf" | sed 's/\([^ ]*\).*//'
这部分:\([^ ]*\).*
是一个正则表达式。正则表达式的第一部分:[^ ]*
,尽可能多次匹配除 space 之外的任何字符,并且 \(
和 \)
之间的字符被捕获到变量 </code>。然后,您还将字符串的其余部分与 <code>.*
匹配,并通过在 sed
命令。
这里有一些关于 sed 的更多信息: http://linux.about.com/od/commands/a/Example-Uses-Of-Sed-Cmdsedxa.htm
如果您真的想在这里使用 grep
,您可以将 grep
的输出通过管道传输到 cut
:
grep -h asdf *.txt | cut -s -d -f 1
请注意 cut
的 -d
选项后必须有两个空格 - 第一个告诉 cut
使用空格作为字段分隔符(我假设你字段以空格分隔而不是制表符分隔),而第二个选项将 -d
选项与以下选项 (-f
).
但是,是的,sed
或 awk
可能是您在这里的朋友...:-)
您可以使用 grep
为行中的图案着色grep --colour -o 'asdf' file.txt
编辑:-o 选项将只打印模式