获取线上的所有内容但使用 grep 进行匹配

获取线上的所有内容但使用 grep 进行匹配

我正在尝试使用 grep 获取匹配行上的所有内容(除匹配项之外)。

如果我有

#define VERSION 0.1

命令应该回显

0.1

我看见问题,但我只想要同一条线上的东西。

我阅读了手册页,但没有找到与我特定用例相匹配的内容。是否有其他命令比 grep 更好?

答案1

实现此目的的一种简单方法是将 grep 的输出通过管道传输到 sed:

command | grep "^#define VERSION" | sed 's/^#define VERSION //'

-n如果您使用开关和正则表达式的(即打印)模式,则仅使用 sed 即可获得相同的结果p。这将替换并仅打印已修改的行:

command | sed -n 's/^#define VERSION //p'

看:男人

答案2

如果你的 grep 版本支持 perl 正则表达式,你可以这样做:

grep -oP '(?<=#define VERSION )[^ ]*$'

否则使用两次 grep 调用:

grep '#define VERSION' | grep -o '[^ ]*$'

相关内容