Sed Solaris 5.10 - PullRequest
       23

Sed Solaris 5.10

0 голосов
/ 18 ноября 2011

Привет! Я пытаюсь написать скрипт для анализа некоторых html-файлов, чтобы облегчить работу, но мне не повезло, я пытался читать другие темы и руководства, но безрезультатно.Кажется, я застрял в круглых скобках.

Я хочу заменить все варианты:

$FORMTOP("2")$ на $FORMTOP("3")$

$WHITE*("5")$ на $WHITE*("10")$

</b> с </strong>

<tr><td с <tr> newline, tab <td

удалить вхождения <td></td>

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

В sed вам нужно будет ввести новую строку (поставить «\» и нажать ввод) и пробелы (нажать пробел 8 раз) вручную в разделе замены.

[jaypal@MBP-13~/temp] sed 's/<tr><td/<tr>\
        <td/g' test123
<tr>
        <td 

<tr>
        <td 
0 голосов
/ 18 ноября 2011

Не могу с уверенностью сказать, что это сработает на Solaris, поскольку у меня его больше нет, но я использую команды Sun-Solaris std sed, ничего особенного, думаю, это должно сработать.

{
cat <<-EOS
\$FORMTOP("2")$
\$WHITE*("5")$
</b>
<tr><td
EOS
} |sed '
s/\$FORMTOP("2")\$/\$FORMTOP("3")\$/g
s/\$WHITE\*("5")\$/\$WHITE\*("10")\$/g
s/<\/b>/\<\/strong>/g
/<tr><td/{
  s/<td//
  a\
    <td

}
'

#output 
$FORMTOP("3")$
$WHITE*("10")$
</strong>
<tr>
        <td

Для этого тестового жгута, используя { cat <<-EOS ... EOS }, я должен был избежать '$', который интерпретировался оболочкой как env vars. Если вы поместили тестовые данные в файл, обязательно удалите '\' перед '$'.

РЕДАКТИРОВАТЬ Кроме того, вещи, которые выглядят с отступом в sed, имеют отступы, за исключением символа, перед самым последним <td.

Кроме того, когда вы написали «Я пытался читать другие темы», вы нашли S.O. пост номер один относительно исправления XML с помощью sed , верно?

Надеюсь, это поможет.

...