Предположим, что каждая страница начинается с^L
(литерала Ctrl+L):
awk '/^L/ { p++ } (p-1) % 500 == 0 { f = FILENAME "-page-" p ".txt" } { print > f }' file.txt
Это будет подсчитывать строки с ^L
, и если количество минус 1 составляет 500 (страница 1, страница 501, страница 1001 и т. д. ), переменная f
будет установлена в имя файла. для вывода следующего текста.
^L
в коде awk
— это не два символа ^
и L
, а литерал Ctrl+L(вы можете ввести это с Ctrl+VCtrl+L). Вы также можете использовать \014
вместо этого.
Для небольшого тестового документаtest.txt
:
^L
page 1
^L
page 2
^L
page 3
^L
page 4
... и изменив 500 на 2 для тестирования, это создает два файла, test.txt-page-1.txt
и test.txt-page-3.txt
, каждый из которых содержит две строки (маркер страницы и текст )из входного файла.
test.txt-page-1.txt
:
^L
page 1
^L
page 2
test.txt-page-3.txt
:
^L
page 3
^L
page 4
Файлы, которые должны быть проанализированы, по-видимому, имеют заголовок перед маркером первой страницы. Этот заголовок следует игнорировать. Следующий вариант приведенной выше команды awk
делает это:
awk '/^L/ { p++ } (p-1) % 500 == 0 { f = FILENAME "-page-" p ".txt" } p > 0 { print > f }' file.txt
Ограничивая вывод до тех пор, пока p
больше нуля,мы требуем, чтобы хотя бы один маркер страницы был проанализирован, прежде чем что-либо выводить.
Snap-пакеты не предназначены для загрузки вручную, поэтому это довольно сложно. Я нашел это на стороне Ubuntu StackExchange.
Как не -пользователь root, вы можете использовать curl
для получения всей информации о пакете:
curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/chromium >> chromium.info
Если вам нужен другой пакет, просто замените chromium
другим именем пакета. Предыдущая команда скопирует всю информацию о пакете в файл chromium.info
. Если в вашей системе установлен процессор JSON, такой как jq
, вы можете передать результат curl
в jq
с помощью
curl -H 'Snap-Device-Series: 16' http://api.snapcraft.io/v2/snaps/info/chromium | jq
для облегчения чтения. Результат будет содержать множество записей для различных каналов и архитектур, ищите ту, которая подходит вам лучше всего. Вы найдете что-то вроде
{
"channel": {
"architecture": "arm64",
"name": "edge",
"released-at": "2019-12-21T08:18:39.959452+00:00",
"risk": "edge",
"track": "latest"
},
"created-at": "2019-12-21T08:16:39.600827+00:00",
"download": {
"deltas": [],
"sha3-384": "92c0824bfc8c136a2b8179fcdd14647f7174dd3103397e107b0100decc1ac8b29eb22fbba61949a4e1fdf1a282f2a8e0",
"size": 144859136,
"url": "https://api.snapcraft.io/api/v1/snaps/download/XKEcBqPM06H1Z7zGOdG5fbICuf8NWK5R_985.snap"
},
"revision": 985,
"type": "app",
"version": "80.0.3987.16"
},
и теперь вы можете wget
указать указанный URL для загрузки файла пакета.
Вы можете загрузить моментальные снимки с помощью snap download (snapname)
, которые получат последний файл моментальных снимков стабильной версии и файл утверждения. После загрузки вы можете установить с помощью snap ack (file.assert)
и snap install./file.snap
.