2016-12-16 3 views
0

У меня есть файл, который сгенерирован как результат SQL-запроса. Мне нужно заменить нули в файле пробелами, поэтому что-то вроде sed -e"s/null//g" будет работать.Sed заменить специальную подстроку

Однако существует допустимая строка формы «null /» (с конечной косой чертой), и это не должно быть заменено. Есть ли способ заменить только «нулевые» значения, оставив «null /» неповрежденным?

ответ

2

СЕПГ один вкладыш:

sed 's#null\([^/]\|$\)#\1#g' file 

должны работать для вашего требования.

Он ищет модель: null and followed by a non-slash char (or EOL),

заменить с followed non-slash char.

Таким образом, null/ не будут затронуты.

+0

Что делать, если 'null' находится в конце строки? – mouviciel

+0

@mouviciel хорошая точка. добавлен 'или EOL' – Kent

+0

Отлично! спасибо – Craig

0

Я думаю, что эта команда должна быть достаточно:

sed -e "s/null[^/]//g" 
+1

это изменит 'nullable' ->' ble', но я думаю, что OP ожидает 'able' – Kent

+0

. Я не думаю, что у OP есть проблема с' null', когда она находится внутри слова, но это можно легко устранить – bracco23

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