sed +正则表达式:如何在给定角色之前获取所有内容

时间:2010-01-14 11:24:02

标签: regex sed

我有一个包含以下内容的属性文件:

myhome=/home/username
lib=/home/libs
例如,我希望获得主路径(即/ home / username):

如果我使用cat + grep之类的

cat property | grep myhome

然后我得到:myhome=/home/username

所以我可以使用sed删除'home =',即在删除之前(包括)'='。我怎么能用sed做到这一点?

干杯 大卫

4 个答案:

答案 0 :(得分:3)

sed -ne "s/^myhome=//p"

回答下面的评论:

sed -ne "s/^[^=]\+=//p"

答案 1 :(得分:2)

使用awk

awk -F"=" '{print $2}' file
awk '{sub(/^.[^=]*=/,"")}1' file

或只使用shell

while IFS="="  read -r a b
do
    echo $b
done <"file"

对于sed,试试这个

sed -ne "s/^.[^=]*=//p" file

只是shell字符串操作

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

答案 2 :(得分:1)

sed 's+.*=++g'

应该做的。

答案 3 :(得分:1)

sed也可以为你做好准备。

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

-n是:

  

禁止自动打印图案空间

尾随p打印匹配的行。