2012-01-20 2 views
1

Я хотел бы использовать sed, чтобы удалить строку из моего файла crontab. Во-первых, я сохраняю crontab пользователя в файле text.txt. Тогда я хотел бы удалить эту строку:Sed манипулирующие линии crontab

*/5 * * * * svn update /root/tamainut/schedule/generico.sh && sh /root/tamainut/schedule/generico.sh 

Я думаю, проблема связана с персонажами, но я потерян. Я пробовал:

sed '*/5 * * * * svn update \/root\/tamainut\/schedule\/generico.sh && sh \/root\/tamainut\/schedule\/generico.sh/d' text.txt 
sed: -e expresión #1, carácter 1: unknown command: `*' 

Я пробовал:

sed '\*/5 \* \* \* \* svn update \/root\/tamainut\/schedule\/generico.sh && sh \/root\/tamainut\/schedule\/generico.sh/d' text.txt 
sed: -e expresión #1, carácter 115: unterminated address regex 

Где я буду неправильно?

ответ

3

* означают "повторен любое количество раз" в sed => использовать \:

sed '/\*\/5 \* \* \* \* svn update \/root\/tamainut\/schedule\/generico.sh && sh \/root\/tamainut\/schedule\/generico.sh/d' text.txt 

Вы также можете заменить все * и / по . (это менее надежный, но более комфортабельный написать: это это то, что я часто делаю):

sed '/..5 . . . . svn update .root.tamainut.schedule.generico.sh && sh .root.tamainut.schedule.generico.sh/d' text.txt 
1

Вы можете использовать:

sed '/\*\/5 \* \* \* \* svn update \/root\/tamainut\/schedule\/generico.sh && sh \/root\/tamainut\/schedule\/generico.sh/d' text.txt 

Но я выбрал бы на одно ключевое слово, или несколько ключевых слов, которые делают линию уникальной и использовать их:

sed '/generico.sh.*generico.sh/d' text.txt 

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

1

Если вы можете ограничить строку поиска, она очистит код sed. Если вы должны соответствовать всей линии, использовать другой разделитель на диапазоне адресов:

 
$ sed '\|^\*/5 \* \* \* \* svn update /root/tamainut/schedule/generico.sh && sh /root/xxxx/file.sh$|d' 

Это позволяет избежать возможностей избежать «/» символов.

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