Вот что нужно, чтобы делать с awk то, что вы хотите. Учитывая этот ввод:
$ printf '%s\n' 'abc\\ndef\nghi'
abc\\ndef\nghi
Обратите внимание, что первый \n
сам экранирован и поэтому должен рассматриваться буквально как \\n
. Вот как получить ожидаемый результат:
$ printf '%s\n' 'abc\\ndef\nghi' |
awk '{gsub(/@/,"@A"); gsub(/\\\\/,"@B"); gsub(/\\n/,"\n"); gsub(/@B/,"\\\\"); gsub(/@A/,"@")}1'
abc\\ndef
ghi
Если вы хотите интерпретировать и другие управляющие последовательности, например. \t
, вы должны добавить отдельный gsub ()для каждого из них сразу после одного для \n
, например.:
awk '{
gsub(/@/,"@A"); gsub(/\\\\/,"@B")
gsub(/\\n/,"\n")
gsub(/\\t/,"\t")
gsub(/@B/,"\\\\"); gsub(/@A/,"@")
}1'
Эти первые 2 и последние 2 gsub ()создают уникальную строку @B
, сопоставляют \\
пары с ней, чтобы убрать их с пути, а затем сопоставляют их обратно после выполнения предполагаемых преобразований.
Вариант 1, "быстрый взлом":Переменная sys-distro
в файлах info.json
в директориях снимков содержит имя системы, так что вы можете написать скрипт, чтобы изменять его каждый раз при создании снимка. (В большинстве систем каталоги моментальных снимков относятся к типу/run/timeshift/backup/timeshift-btrfs/snapshots/DIFFERENTTIMES/
)
Вариант 2 (непроверенный ), самое чистое и простое решение:Изменить /etc/lsb_release
и/или /etc/os_release
. См. также вариант 3 для получения информации об этом.
Вариант 3 (непроверенный ), исправьте его для всего мира с помощью кода:Я немного покопался в исходном коде timeshift .(Под словом «быстро» я имею в виду некоторые обоснованные догадки...)и вот что я нашел:
sys-distro
генерируется в write_control_file()
и основывается на переданном аргументеdistro_full_name
current_distro.full_name()
обычно выдается заdistro_full_name
full_name()
генерируется на основе переменных с именами dist_id
, release
и codename
get_dist_info()
get_dist_info()
получает всю эту информацию от /etc/lsb-release
и/или /etc/os-release
(, поэтому предлагается вариант 2)write_control_file()
определяется src/Core/Main.vala
. Вероятно, лучше всего изменить только этот последний шаг. Примечание :Все параметры предназначены для будущих резервных копий, чтобы сделать это для уже созданных резервных копий, используйте вариант 1 и измените info.json
файлы, которые уже существуют