arrays - 修复虚拟机和描述符文件 - 重写 vmx
问题描述
这是 grep -E "scsi0:" *.vmx | 的输出。我的目录之一中的 grep -E "fileName" 命令:
scsi0:0.fileName = "vmname.vmdk"
scsi0:1.fileName = "vmname_1.vmdk"
scsi0:2.fileName = "vmname_2.vmdk"
scsi0:3.fileName = "P120_vmname_2.vmdk"
scsi0:4.fileName = "P120_vmname_3.vmdk"
我需要重写该 vmx 文件中的上述输出,使其如下所示
scsi0:0.fileName = "vmname.vmdk"
scsi0:1.fileName = "vmname_1.vmdk"
scsi0:2.fileName = "vmname_2.vmdk"
scsi0:3.fileName = "vmname_3.vmdk"
scsi0:4.fileName = "vmname_4.vmdk"
所以本质上脚本需要以下内容:
- 查找包含scsi0和文件名的行并删除vmname之前的双引号后的所有内容
- 检查“scsi0:”之后该行中的数字是什么,并在下划线之后添加/替换该数字,因此 P120_vmname_2 变为 vmname_3
问题是vmname之前可以有任意数量的字符需要删除,需要修复的行可以在源文件中的任何位置。
我是否需要将单独的行输出分配给单独的变量,或者可以只用一个来操作它们?
谢谢
解决方案
你能把你的grep
输出输入sed
吗?
如果是这样,您可以像这样进行替换:
sed -r 's/^(.*:)([[:digit:]]+)(.*) = \".*vmname_[[:digit:]]+/\1\2\3 = \"vmname_\2/'
# ^ ^ ^ ^ ^ ^ ^
# | | | | | | Replace number.
# | | | | | Re-create line start
# | | | | Match incorrect number
# | | | Match garbage before "vmname"
# | | Match Filename
# | Correct number
# Line start
所以你的实际命令看起来像这样:
grep -E "scsi0:" *.vmx | grep -E "fileName" | \
sed -r 's/^(.*:)([[:digit:]]+)(.*) = \".*vmname_[[:digit:]]+/\1\2\3 = \"vmname_\2/'
转换这个:
scsi0:0.fileName = "vmname.vmdk"
scsi0:1.fileName = "vmname_1.vmdk"
scsi0:2.fileName = "vmname_2.vmdk"
scsi0:3.fileName = "P120_vmname_2.vmdk"
scsi0:4.fileName = "P120_vmname_3.vmdk"
scsi0:5.fileName = "P12asdasdsada_asdasd_sdsad0_vmname_3.vmdk"
scsi0:6.fileName = "vmname_3.vmdk"
对此:
scsi0:0.fileName = "vmname.vmdk"
scsi0:1.fileName = "vmname_1.vmdk"
scsi0:2.fileName = "vmname_2.vmdk"
scsi0:3.fileName = "vmname_3.vmdk"
scsi0:4.fileName = "vmname_4.vmdk"
scsi0:5.fileName = "vmname_5.vmdk"
scsi0:6.fileName = "vmname_6.vmdk"
推荐阅读
- c# - 在 ASP 中访问数据库表时遇到问题。网络核心
- python - 在地理数据框和栅格对象之间测试 crs
- python - 如何访问具有多个索引的数据框的值?
- spring-security - 添加具有相同逻辑的新 jwt oauth 端点
- angular - 使用 Ionic + Angular 获取请求 Firestore:跨域请求被阻止并返回空数组
- python - 当 FastAPI 中的值留空时,出现 422 Unprocessable Entity
- python - ValueError:无法处理参数 Python MYSQL 连接器
- python - 从冗余行获取箱线图
- javascript - 无法使用kaboomjs在replit之外加载精灵
- java - 从 Web 应用程序在 Spring 控制器中下载纯文本文件的问题