sed + регулярное выражение: как получить все перед заданным символом - PullRequest
1 голос
/ 14 января 2010

У меня есть файлы свойств, которые содержат такие вещи, как:

myhome=/home/username
lib=/home/libs

и я хочу, например, получить домашний путь (т.е. / home / username):

Если я использую cat + grep, как

cat property | grep myhome

тогда я получаю: myhome=/home/username

чтобы я мог использовать sed для удаления 'home =', т.е. удалить все до (и включая) '='. Как я могу сделать это с помощью sed?

Приветствие David

Ответы [ 4 ]

3 голосов
/ 14 января 2010
sed -ne "s/^myhome=//p"

Отвечая на ваш комментарий ниже:

sed -ne "s/^[^=]\+=//p"
2 голосов
/ 14 января 2010

используйте awk

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

или просто используйте оболочку

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

для sed, попробуйте это

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

просто манипуляции с оболочкой

$ myhome=/home/username=blah
$ echo ${myhome%%=}
/home/username=blah
1 голос
/ 14 января 2010

Сед может сделать для вас тоже.

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

-n:

подавить автоматическую печать пространства шаблона

В то время как завершающий p печатает согласованную линию.

1 голос
/ 14 января 2010
sed 's+.*=++g'

должен сделать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...