2

У меня есть текстовый файл, содержание которого выглядит так:

body
    font-size: 12px
    color: blue

td
    font-size: 14px

...

Я хочу добавить ; в строки, которые содержат : так что содержимое будет:

body
    font-size: 12px;
    color: blue;

td
    font-size: 14px;

...

Какой самый простой способ сделать это в Linux?

3 ответа3

3

В Vim или любом другом редакторе с приличной поддержкой регулярных выражений

:%s/\(:.*\)$/\1;/
3

Используйте подстановку регулярных выражений. Многие редакторы поддерживают регулярные выражения, в том числе Vim.

Вот как это сделать из командной строки, используя sed (Stream EDitor):

sed -i -e "s/.*:.*/&;/" INPUT_FILE.css

Некоторые версии sed не поддерживают редактирование на месте (запись выходного файла во входной файл):

sed -e "s/.*:.*/&;/" INPUT_FILE.css > OUTPUT_FILE.css

Объяснение:

sed             invoke Stream EDitor commmand line tool
-i              edit in-place
-e              the next string will be the regular expression: s/.*:.*/&;/
INPUT_FILE.css  the name of your text file

Регулярное выражение (RegEx) объяснено подробно:

s   RegEx command indicates substitution
/   RegEx delimiter: separates command and match expression
.*  any string followed by...
:   a colon character followed by...
.*  any string
/   RegEx delimiter: separates match expression and replacement expression
&   RegEx back reference, entire string that was matched by match expression
;   the semicolon you wish to add
/   RegEx delimiter: ends replacement expression
0

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

ex -sc 'g/:/s/$/;/' -cx file
  1. g глобальный поиск

  2. s заменой

  3. $ Конец строки

  4. x сохранить и закрыть

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .