2015-05-14 4 views
0

У меня есть файлы, которые иногда их содержание, как показано ниже:Shell - Проверка, если одна точка находится на новой строке

sometexthere1.33 
sometexthere2.33 
. 
sometexthere3.33 

Я был в состоянии заменить определенный текст, но не то, что точка. В моем случае я хотел бы дублировать точку, когда точка найдена сама по себе на новой строке.

ответ

2

Вы можете найти строки ни с чем одну точку, и заменить их двумя точками, с помощью команды:

sed 's/^\.$/../' 

как в следующем стенограмме:

pax> echo 'sometexthere1.33 
...> sometexthere2.33 
...> . 
...> sometexthere3.33' | sed 's/^\.$/../' 

sometexthere1.33 
sometexthere2.33 
.. 
sometexthere3.33 

В sed, 's/X/Y/' изменит первое вхождение X на Y. В вашем случае, X должен быть ^\.$:

  • начало строки маркера '^';
  • буквальная точка, '\.'; и
  • конечный маркер, '$'.

Y, конечно, всего две точки, '..'.

+0

Спасибо за код и объяснение! Это сработало :-) –