Как изменить текстовое содержимое файла только с помощью команд Shell Script?
В файле есть:
sd5_crypt UUID=1337 none luks,discard
Я хотел бы изменить это на:
sd5_crypt UUID=1337 /dev/disk/by-label/MON_LABEL_ICI:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
с помощью сценария оболочки.
Я не знаю (слепо), если это sd5, sd4 или sx999... Я не знаю UUID.
Я должен изменить все, что после 1337 года. Ну, по-человечески сказал: "Я удаляю все после номера UUID - я не знаю его - и заменяю на /dev/dis/by-label....
который я знаю.
Я не знаю, что является хорошим решением. Можете ли вы помочь, пожалуйста?
1 ответ
Решение
Расширенная версия моего комментария:
Ты можешь использовать sed
отредактировать ваш файл. В общем вам нужно:
sed 's/STRING/REPLACEMENT/g'
В вашем примере следующий код должен работать для вас:
С объяснением:
sed -i # the -i option allows you to read from and write to the same file
's/none luks,discard/ # the part you want to replace
\/dev\/disk\/by-label\/MON_LABEL_ICI:\/keyfile luks,keyscript=\/lib\/cryptsetup\/scripts\/passdev/g'
# the part you want to insert. Note, that the / characters
# have to be escaped with \/
input.txt # your input file
как однострочник без комментариев для копирования-вставки:
sed -i 's/none luks,discard/\/dev\/disk\/by-label\/MON_LABEL_ICI:\/keyfile luks,keyscript=\/lib\/cryptsetup\/scripts\/passdev/g' input.txt