2016-02-02 3 views
-1

Пытается написать скрипт Sed для преобразования страниц man в латекс. Нужно добавить пробел и \\ в конце каждой строки, чей первый непустой символ либо «+», либо «-». То, что я сделал:Sed: добавление к концу определенной строки

/[. \t]-[a-zA-Z]/s/$/ \\\\/ 
    /[. \t]+[a-zA-Z]/s/$/ \\\\/ 

Я понял, что страницы человека были пробелы или вкладку blankspace перед «-» или «+» встречалось, поэтому я добавил пространство и вкладку по адресу. Моя проблема заключается в том, что она добавляет \\ в конец каждой строки, которая имеет символ «-» или «+» с символом. Пример вывод:

  -daystart \\ 
        Measure times (for -amin, -atime, -cmin, ctime, \\ 
        -mmin, and -mtime) from the beginning of today \\ 
        rather than from 24 hours ago. 

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

ответ

0

Для вас работает следующее:

/^[. \t][. \t]*[-+][a-zA-Z]/s/$/ \\\\/ 
+0

Работал отлично. Спасибо! – MAXTE

0

Если вы хотите, чтобы соответствовать - или + в начале строки (после некоторого пробела), то вы можете сделать:

sed '/^[. \t]-[a-zA-Z]/s/$/ \\\\/' inputfile 

Обратите внимание на ^, что соответствует началу строки ,

Кроме того, думаю, вы можете удалить эту деталь [a-zA-Z], или зачем вам это нужно? После этого вы можете также искать - и + в то же время с помощью [-+]:

sed '/^[. \t][-+]/s/$/ \\\\ 

Но, может быть, я не понял, что именно вы хотите сделать.

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