LINUX.ORG.RU

Как очистить строку в переменной, если в ней содержится нужная подстрока?

 ,


0

2

Всем доброе время.

Freebsd, пишу скрипт, который удалит из log файла лишние строки, а именно, содержащие подстроку «vbk»

Т.е. если в строке есть эта подстрока, то эту подстроку нужно просто обнулить, чтобы в логе остались только строки без этой самой vbk.

Как это лучше сделать?

#!/bin/sh

while read LINE do

##cut line with ‘vbk’

echo $LINE >> newlog done < log

grep -v "vbk" log
anonymous
()
Ответ на: удаленный комментарий

Че то ругается: sed: 1: «file.log»: undefined label ‘ile.log’

overself
() автор топика
Ответ на: комментарий от Xenius

Вот это крутецкая вещь, не думал, что так просто можно сделать все одной строкой, думал каждую строчку перебирать. :)

overself
() автор топика
Ответ на: комментарий от overself

я неправильно прочитал топик. Эта команда делает не то что тебе нужно.

Она удаляет из всех строк vbk. Остальную часть строк оставляет. Изменения записывает в исходный файл.

Пользуйся grep -v.

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Спасибо всем! grep -v работает как нужно!!!

overself
() автор топика
Ответ на: комментарий от Tanger

Господа, ничего не понимаю, если я запускаю комманду вручную - она прекрасно отрабатывает, а если она запускается по крону - ничего не происходит. С чем это может быть связано?

#!/bin/sh

#clear log from garbage grep -v vbk my.log > newlog rm newlog my.log touch /usr/local/etc/borgtony2/testpid

По крону создается testpid, но файл остается не измененным. :(

overself
() автор топика
Ответ на: комментарий от overself

Воспользуйтесь поиском. На форуме миллион тем, почему команда на работает из-под крона.

akk ★★★★★
()
Ответ на: комментарий от anonymous

тогда уж и полные пути к грепу, мв и тачу надо прописывать. или добавить в скрипт переменную PATH с путями.

nerve ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.