2015-05-19 2 views
0

Я пытаюсь заменить любые периоды, которые происходят в середине строки в файле.Замена "." в файле unix

Я попытался sed с помощью 's/./5/g', а также 's/'.'/5/g и 's/"."/5/g' и ни один из них не дал мне выход, я хочу.

Первый вариант заменяет весь файл одним 5, второй заменяет каждый отдельный символ на 5, а третий ничего не делает (я использую grep для подсчета вхождений. И они все еще там) ,

Любая помощь о том, как сделать это было бы весьма признателен

входной_файл:

010001010.10101010101 

выходной_файл необходимо:

010001010510101010101 

ответ

3

РегВыр шаблон . означает "любой символ". Вы хотите s/\./5/g

+1

Или, возможно, 's /[.]/ 5/G'; немного более устойчивым к дополнительным пропускам unescaping (если команда передается через ssh или где-то еще, где она запускается до выполнения). –

+0

'echo 'a.b' | ssh localhost "sed 's /\./ 5/g'" 'работает отлично. – ikegami

+0

Спасибо! Это было именно то, что мне нужно. – slarmer1

0

просто добавить обратный слеш перед точкой, так как это специальный символ

sed 's/\./5/g' file 
0

Проблема у Вас есть это с «» также используется в качестве подстановочного знака. Вы можете решить эту проблему вытекания его с \ так что это будет как s/\./5/g

0

Для простого преобразования можно использовать тр:

cat file | tr "." "5" 
Смежные вопросы