我正在尝试使用 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 '[^ ]*$'