Возможно, проблема связана с доступом к папке /dev/xconsole. Попробуйте использовать chmod
, чтобы изменить разрешение и перезапустить его. Это может сработать.
Не совсем уверен, что вы хотите заархивировать. Предположим, вы хотите исправить файл file.txt
, содержащий текст и ваши пары значений ключа, подобные этому
key1
key2
text
key1 = "original"
key2 = ['o', 'r', 'i', 'g']
text
с patchfile.txt
, содержащим только пары значений ключа значений, которые вы хотите заменить, например
key1 = "patched"
key2 = ['p', 'a', 't', 'c', 'h']
без перезаписи текста key1
/ key2
, который не является парой ключ-значение, чтобы получить file.txt
подобное этому
key1
key2
text
key1 = "patched"
key2 = ['p', 'a', 't', 'c', 'h']
text
, введя такую команду
patchmystuff.sh file.txt patchfile.txt
Содержание patchmystuff.sh
может выглядеть так:
#!/usr/bin/env bash
original_file=$1
patch_file=$2
# loop from here:
# https://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash
while IFS="" read -r line || [ -n "$line" ]
do
printf 'patching %s\n' "$line"
# (?<==) is the lookbehind for = to keep it
# otherwise it will match key1/key2 in regular text
search_string=$(echo "$line" | perl -ne 's/(?<==).*//g; print;')
printf 'search string: "%s"\n' "$search_string"
sed -i -e "s/$search_string.*/$line/g" "$original_file"
done < "$patch_file"