【发布时间】:2018-10-09 14:20:22
【问题描述】:
我无法弄清楚如何 grep 两个单引号之间的字符。
我在一个文件里有这个
version: '8.x-1.0-alpha1'
我喜欢这样的输出(版本号可以是不同的):
8.x-1.0-alpha1
我写了以下,但它不起作用:
cat myfile.txt | grep -e 'version' | sed 's/.*\?'\(.*?\)'.*//g'
感谢您的帮助。
补充:
我使用了 sed 命令sed -n "s#version:\s*'\(.*\)'#\1#p"
我还想删除 8.x- 我编辑到 sed -n "s#version:\s*'8.x-\(.*\)'#\1#p"。
此命令仅适用于 linux,不适用于 MAC。如何更改此命令以使其在 MAC 上运行?
sed -n "s#version:\s*'8.x-\(.*\)'#\1#p"
【问题讨论】:
-
请注意,
cat | grep | sed在很大程度上是没有意义的,只能是sed pattern myfile.txt。这个文件是什么格式的?我的猜测是 sed 是错误的工具。 -
你的外壳正在“吃掉”你的报价;
sed看不到他们。 -
@Kwright02:“正则表达式”只引用括号。
.*未加引号,将由 shell 处理/扩展