2014-04-17 3 views
0

Я хочу удалить слова в строку. Например:Как передать переменную в sed

I want to delete one word in this line 

И я хочу, чтобы удалить «один», чтобы получить:

I want to delete word in this line 

Передавая слово через переменную. До сих пор у меня есть:

WORD=one ; sed -n 's/"$WORD"//g' file.txt > newfile.txt 

Но это ничего не значит. Почему нет? И как я могу заставить его работать?

+0

Переменные не расширяются внутри одинарных кавычек, только внутри двойных кавычек. Двойные кавычки внутри одинарных кавычек не имеют особого эффекта. – Barmar

ответ

2
WORD=one ; sed -e "s/$WORD//g" file.txt > newfile.txt 

ключевой момент - это переменное расширение. Вы должны быть осторожны, потому что расширение командной оболочки иногда может быть не тем, что вы хотите. В тяжелых случаях вы должны сделать что-то вроде этого:

EXPANDVAR=one; NOEXPANDVAR=another; sed -e 's/'"$EXPANDVAR"'$NOEXPANDVAR//g' file.txt > newfile.txt 

В этом случае SED заменит (удалить) шаблон один $ NOEXPANDVAR, буквально.

+0

wow thanks, действительно, это было тяжело, спасибо за его решение! –

Смежные вопросы