Как изменить текстовое содержимое файла только с помощью команд 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
Другие вопросы по тегам