Вы можете разделить файл popis.txt
на 5000+ временных файлов с помощью команды split(GNU coreutils ):
split -d -a4 -l5 popis.txt split
Это создает файлы split0001
, split0002
,... с пятью строками в файле и немного упрощает дальнейшую обработку.
Создайте свой модифицированный скрипт и сохраните его какscript.sh
:
#!/bin/bash
for file; do
while read -r line; do
if [[ "$line" = ""* ]]; then
artist=$line
elif [[ "$line" = ""* ]]; then
song=$line
elif [[ "$line" = ""* ]]; then
album=$line
elif [[ "$line" = ""* ]]; then
year=$line
else
# remove prefix `#FILENAME "` and the last quote `"`
filename=$(echo "$line" | sed 's/[^"]*"//;s/"[[:space:]]*$//')
fi
done < "$file"
echo "${artist}${song}${album}${year} " > "$filename"
done
Сделайте ваш скрипт исполняемым и запустите его на всех splitXXXX
файлах:
chmod +x script.sh
./script.sh split*
Если все прошло хорошо, для каждого входного файла должен быть создан один XML-файл, и вы можете удалить временные файлы:
rm split*
create Create but do not start a container
exec Run a process in a running container
Exec не запускает ваш контейнер. Для этого вы можете использовать start
или run
.
Если, несмотря на это, он не работает, ваш контейнер, вероятно, разбился или завершил работу до того, как вы смогли выполнить команду exec
. Если ваш основной процесс завершится, то же самое сделает и ваш контейнер, см. также:https://stackoverflow.com/a/28214133/2519977
В качестве минимального теста вы можете попробовать:
ctr=$(podman create alpine:3)
podman run -d -it $ctr /bin/sh
;tldr :Контейнер считается «работающим», если внутри него запущен процесс. Процесс выполняется только тогда, когда запущен контейнер Created
и состояние Up
Если вы создаете контейнер с podman create
, состояние будет Created
,
$ podman create alpine:3
d02b4e268fd4bb4a816852efd2e032069402474237e7bea6b3708b0319e9c318
$ podman container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d02b4e268fd4 docker.io/library/alpine:latest /bin/sh 8 seconds ago Created exciting_hofstadter
Теперь вы можете начать с этого с помощью podman start
, но он не будет оставаться в этом состоянии, он мгновенно выйдет,
$ podman start d02b4e268fd4
d02b4e268fd4
$ podman container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d02b4e268fd4 docker.io/library/alpine:latest /bin/sh 21 seconds ago Exited (0) 5 seconds ago exciting_hofstadter
Решение здесь состоит в том, чтобы в нем был долго работающий процесс,
# status created
$ podman create -ti alpine:3 /bin/sh
Теперь статусUp
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cefa530172e3 docker.io/library/alpine:latest /bin/sh About a minute ago Up 25 seconds ago musing_cohen
И теперь ты можешь exec
в нём,
$ podman exec cefa530172e3 /bin/echo "Hello World"
Hello World