На основе вашего описания в тексте приведена очищенная версия вашего сценария sed, которая должна работать.
Предполагается, что Linux Linux GNU sed
sed -i '/abcd=/d' /test.txt
Если выиспользуя OS-X, вам нужно
sed -i "" '/abcd=/d' /test.txt
Если это не сработает, тогда используйте old-school sed
с условным mv для управления вашими tmp-файлами.
sed '/abcd=/d' /test.txt > test.txt.$$ && /bin/mv test.txt.$$ test.txt
Примечания:
Не знаете, почему вы делаете \"/$abcd=/d\"
, вам не нужно экранировать "
символов, если вы не делаете с этим кодом больше, чем указываете (например, с помощью eval
).Просто напишите это как "/$abcd=/d"
.
Обычно вам не нужно '-e'
Если вы действительно хотите использовать '$ abcd, тогда вам нужно дать ему значение И каквы соответствуете строке 'abcd =', тогда вы можете сделать
abcd='abcd='
sed -i "/${abcd}/d" /test.txt
Надеюсь, это поможет.