Jump to content

Recommended Posts

Posted

Сломался скрипт, который забирает выгрузки с сервера РКН.

Видимо размер файла вырос и теперь парсер SAX не справляется.

 

Есть XML-файл, в котором есть нода registerZipArchive большого объема.

Я хочу ее содержание вынести в отдельный файл, а в исходном файле оставить пустую ноду.

Вырезать видимо нужно с помощью sed. Не подскажите, как именно это сделать?

Нужно сделать так, что если в тексте есть <registerZipArchive>data...</registerZipArchive>, то сохранить "data..." в отдельный файл, а в исходном файле его вырезать (чтобы получилось <registerZipArchive></registerZipArchive>).

 

Использую такой запрос:

sed -e 's|<registerZipArchive>.+</registerZipArchive>|<registerZipArchive></registerZipArchive>|' response.xml

Но видимо что-то тут не то, потому что эта команда выводит полное содержание XML-файла, не вырезая из него архив в base64.

Posted

С вырезанием из исходного запроса все получилось:

sed 's|<registerZipArchive>.*</registerZipArchive>|<registerZipArchive>...cut...</registerZipArchive>|g' data.xml > data.xml

 

А как бы мне перед этим получить вырезанную часть в отдельный файл?

sed 's|<registerZipArchive>(.*)</registerZipArchive>|$1|g' data.xml > base64

не работает, sed не понимает $1 (да и скобки тоже).

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

Posted

Потому что он выдает ошибку "huge text node: out of memory".

 

Вообщем сделал так:

 -n 's|.*<registerZipArchive>\(.*\)</registerZipArchive>.*|\1|p'

Работает, хотя я и не очень понимаю, почему скобки нужно экранировать.

Posted
Работает, хотя я и не очень понимаю, почему скобки нужно экранировать.

man regex и не забывать, что по умолчанию включены basic, а не extended

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...