sed -i '/uuid=/c\uuid='`uuidgen`'' \ /etc/NetworkManager/system-connections/ens33.nmconnection
时间: 2024-09-12 12:10:02 浏览: 64
直观的查找和替换CLI(替代sed)-C/C++开发
在Linux中,`sed -i` 命令用于在原地修改文件内容,即不创建备份直接对文件做替换。在这个例子中,它试图在 `/etc/NetworkManager/system-connections/ens33.nmconnection` 文件中查找所有包含 "uuid=" 的行,并将其替换为 "uuid=`uuidgen`" 这一行,其中 `uuidgen` 是一个生成随机UUID的命令。
`'/uuid=/c\uuid=`uuidgen`''` 是 `sed` 的指令格式:
- `/uuid=/` 是正则表达式,表示匹配包含 "uuid=" 的行。
- `c` 是命令,代表“替换”(change)。
- `\u` 是转义序列,防止 `uuid=` 被当作行开始标记。
- `uuid=` 后面加双引号是为了保留字符串中的空格,因为 `uuidgen` 输出的可能是带空格的结果。
- ``uuidgen`` 是 `uuidgen` 命令的引用,`sed` 会在此处插入实际生成的UUID值。
但是,需要注意的是,`sed -i` 可能不会立即生效,因为它依赖于shell的缓存或者其他因素。为了保证替换成功,最好先备份原始文件,或者在命令最后加上 `! sh -i '! sh -c 'echo $0 > $0.bak && cp $0 $0.bak'" /etc/NetworkManager/system-connections/ens33.nmconnection
```
阅读全文