Regex sed+;正则表达式:如何在给定字符之前获取所有内容

Regex sed+;正则表达式:如何在给定字符之前获取所有内容,regex,sed,Regex,Sed,我有一个属性文件,其中包含以下内容: myhome=/home/username lib=/home/libs 例如,我想获取主路径(即/home/username): 如果我像这样使用cat+grep cat property | grep myhome 然后我得到:myhome=/home/username 因此,我可以使用sed删除“home=”,即删除“=”之前的所有内容(包括“=”)。我怎样才能用sed做到这一点 干杯 大卫 以下是对您的评论的回复: sed -ne "s/^[^=

我有一个属性文件,其中包含以下内容:

myhome=/home/username
lib=/home/libs
例如,我想获取主路径(即/home/username):

如果我像这样使用cat+grep

cat property | grep myhome
然后我得到:
myhome=/home/username

因此,我可以使用sed删除“home=”,即删除“=”之前的所有内容(包括“=”)。我怎样才能用sed做到这一点

干杯 大卫

以下是对您的评论的回复:

sed -ne "s/^[^=]\+=//p"
以下是对您的评论的回复:

sed -ne "s/^[^=]\+=//p"
我应该做这项工作

应该做这项工作。

使用awk

awk -F"=" '{print $2}' file
awk '{sub(/^.[^=]*=/,"")}1' file
或者干脆用外壳

while IFS="="  read -r a b
do
    echo $b
done <"file"
只是shell字符串操作

$ myhome=/home/username=blah
$ echo ${myhome%%=}
/home/username=blah
使用awk

awk -F"=" '{print $2}' file
awk '{sub(/^.[^=]*=/,"")}1' file
或者干脆用外壳

while IFS="="  read -r a b
do
    echo $b
done <"file"
只是shell字符串操作

$ myhome=/home/username=blah
$ echo ${myhome%%=}
/home/username=blah

塞德也可以帮你做格雷格舞

$ sed -n -e "s/^myhome=//p" property
-n
是:

抑制图案空间的自动打印


而尾随的
p
将打印一条匹配的行。

sed也可以为您进行灰显

$ sed -n -e "s/^myhome=//p" property
-n
是:

抑制图案空间的自动打印


而尾随的
p
将打印匹配的行。

谢谢!但是有没有一种更通用的表达式不使用“myhome”的方法,即删除“=”之前的所有内容,而不管“=”之前的内容实际上,我只是尝试了“s/^[^=]+=//p”,但它不起作用。。。它不返回任何内容(使用-ne)或使用(-e)返回所有内容,只是尝试了以下操作:
echo“myhome=foo”| sed-ne的//^[^=]*=///p'
,结果是在stdout上写入了“foo”。因此,用*替换+并且所有都应该是好的。固定的,plus应该在sed regexp中转义。plus建议行
=foo
应保持原样<代码>*也可以。谢谢!但是有没有一种更通用的表达式不使用“myhome”的方法,即删除“=”之前的所有内容,而不管“=”之前的内容实际上,我只是尝试了“s/^[^=]+=//p”,但它不起作用。。。它不返回任何内容(使用-ne)或使用(-e)返回所有内容,只是尝试了以下操作:
echo“myhome=foo”| sed-ne的//^[^=]*=///p'
,结果是在stdout上写入了“foo”。因此,用*替换+并且所有都应该是好的。固定的,plus应该在sed regexp中转义。plus建议行
=foo
应保持原样<代码>*也很有效。谢谢,我更了解awk,并想按照您的建议去做,但我试图强迫自己使用/学习sed:-)如果您了解awk,就没有必要了解sed。sed的基本原理是正则表达式。当你学习awk时,你也会学习正则表达式。我会说,总是需要学习其他工具。。。有一天,你可能不得不处理一个只使用sed的项目……然后你就感到厌烦了。汉克斯,我更了解awk,并想按照你的建议去做,但我试图强迫自己使用/学习sed:-)如果你知道awk,就没有必要了解sed。sed的基本原理是正则表达式。当你学习awk时,你也会学习正则表达式。我会说,总是需要学习其他工具。。。有一天,你可能不得不处理一个只使用sed的项目……然后你就被填充了。myhome=/home/username=john将被截断为johnalso空行,没有
=
的行将被打印。myhome=/home/username=john将被截断为johnalso空行,没有
=
的行将被打印