2014-01-20 4 views
1

Я немного новичок в этом, так что медведь со мной. Я хотел бы заменить определенный текст, прикрепленный к переменной? или это строка? Я не могу вспомнить, как это называется.Замена слов в команде оболочки

удалить меня из// этого/здесь/строка/

var="delete me /from/this\ here\ string/" 

я пытался:

echo $var | sed 's/^\(.* \)\(delete\sthis \)$/\wtf?\1/g' 
echo $var | sed 's/.*\//delete this;/g' 
awk ${var/123/abc}; 

Я хотел бы мерзавец riddens на 'удалить меня' печати. вторая часть всегда изменяется, но «delete me» всегда присутствует. Я слишком стар для этого, так что спасибо

+0

привет? кто-то там? –

+0

О, дорогая, мне нужно уложить –

+0

не нужно «пинговать» людей через 2 часа; ответы могут занять несколько дней, чтобы появиться на [так]. –

ответ

0
var="delete me /from/this\ here\ string/" 

var="$(printf '%s' "$var" | sed -e 's/^[[:blank:]]*delete[[:blank:]][[:blank:]]*[^[:blank:]]*[[:blank:]]*//' -e 's/\\//g')" 

echo "$var" 

Мой выход:

/from/this here string/ 

Это просто заменяет слово «удалить» и слово после его, удаляя все пространство до и после фразы конечно. Это позволяет работать с «delete me», «delete this» и даже «\ t \ t delete \ t \ t \ t me_too \ t \ t \ t», потому что «пустой» - это пробел или символ табуляции (\ т). Он будет работать только для двух слов, начиная с «delete» в начале.

Надеюсь, это поможет.

+0

благодарю вас за это, я получаю '/ from/this \ here \ string /', мне интересно, почему это не то же самое. вы перенесли первую часть, что я не мог понять при выполнении –

+0

, есть ли преимущество использования sed над awk? –

+0

Вы можете использовать awk, но sed создан для таких задач, как эти. Имя sed происходит из «редактора потоков» или чего-то подобного; он выполняет свою работу как простой редактор. Awk - это процессор записи. Если у вас есть столбцы данных в файлах, awk отлично подходит для этого. –

2

Попробуйте

> var="delete me /from/this\ here\ string/" 
> echo "${var/delete me/}" 
/from/this\ here\ string/ 
1

Как насчет этого?

echo $var|sed 's/\(^[^/]*\)/abc/' 
Смежные вопросы