Как инвертировать две строки и удалить разрыв строки между ними с помощью sed в bash сценариях? - PullRequest
0 голосов
/ 31 января 2020

Я написал bash скрипт для разбора файла HTML с curl в переменную. Я получил такой код:

<title>aa bb cc</title>
<time>12345</time>

Я хотел бы отредактировать этот код, чтобы получить такой результат:

<time>12345</time><title>aa bb cc</title>

Я полагаю, что вы не можете сделать это с помощью sed. Кто-нибудь, кто может мне помочь? Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 31 января 2020

Попробуйте это

result="";while IFS= read -r line ;do result=$result$line;done < yourfile.html;echo $result
0 голосов
/ 31 января 2020

Направьте завиток через awk.
I упрощение * Пример 1007 * -

var="$( curl "$url" |  
         awk '/title/{title=$0}
              /time/{time=$0}
              END{ printf "%s%s", time, title }' )"

Это работает, только если это только две возвращенные строки, что кажется маловероятным, но это должно дать вам кое-что для работы.

0 голосов
/ 31 января 2020

Следующее работает для представленного вами простого случая, однако, возможно, вы захотите привести более общий пример, если вы хотите получить более эффективное решение.

your_curl_command | sed 'N;s/\(.*\)\n\(.*\)/\2\1/'

Что делает команда, приведенная выше, так это присоединение одной строки к текущей (N) и инвертирование двух строк при удалении символа новой строки из середины (s/…/…/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...