Измените значение из файла через некоторое время

Вкл. При установке Ubuntu amd64 , i386 включен в качестве дополнительной архитектуры по умолчанию. apt & co. ожидайте, что репозитории предоставят все настроенные архитектуры, что вызывает ошибку, которую вы видите.

Поскольку ваше зеркало содержит только пакеты amd64 , вы должны отметить его как таковой:

deb [ arch=amd64 ] file:///var/spool/apt-mirror-trusty/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
0
07.04.2019, 19:09
1 ответ

Чтение значения из файла и последующее изменение переменной, содержащей это значение, не изменит значение в файле.

Вместо этого вам придется определить, какие значения необходимо изменить, изменить их, а затем вывести полный файл (, включая измененные значения ), в новый файл. Затем этот новый файл можно переместить под исходное имя, заменив старый файл.

Кроме того, разбора текста в оболочке обычно следует избегать . Вместо этого рассмотрите возможность использования чего-то вроде awkдля этого:

awk -F '\t' 'BEGIN { OFS=FS }
             $4 == "No" { print "Congrats, here is your gift" >"/dev/stderr" }
             { $4 = "Yes"; print }' file.txt >newfile.txt

Это будет читать файл построчно, и всякий раз, когда в четвертом столбце указано No, выводится текст Congrats, here is your gift.

Затем для каждой строки четвертый столбец безоговорочно устанавливается в Yesдо того, как будет напечатана вся строка.

Как программа написана и запущена выше, в терминале появится сообщение Congrats...(оно записывается в стандартный поток ошибок )в то время как обновленное содержимое файла будет записано в новый файл называется newfile.txt.

Блок BEGINв начале кода просто устанавливает разделитель полей вывода, OFS, на то же значение, что и разделитель полей ввода, FS, который устанавливается на символ табуляции в командной строке. используя -F '\t'.

0
28.01.2020, 03:51

Теги

Похожие вопросы