如何仅使用 Shell 脚本命令更改文件文本内容?

如何仅使用 Shell 脚本命令更改文件文本内容?

在一个文件中,有:

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

使用 Shell 脚本。

我不知道(盲)它是 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

相关内容