我有一个文件Backup_status.txt,如下所示。
x01stestdb1a-10.92.201.111-SUCCESS
x01stestdb2a-10.92.201.112-SUCCESS
x01stestdb3a-10.92.201.113-SUCCESS
在所有服务器上运行的备份。
例如,如果在x01stestdb2a中提交备份,我们需要在此文件中使用主机名x01stestdb2a进行搜索,并将状态更改为FAIL。 这里我使用连字符( - )作为分隔符。
帮助我如何在文件中搜索该服务器名称,并使用分隔符替换最后一个块 - 。
注意:我想更改文件中的内容。
答案 0 :(得分:0)
试试这个:
sed -i '/SERVER1/ s/-[^-]*$/-FAIL/' Backup_status.txt
/SERVER1/
让sed在匹配SERVER1
的行上替换。
sed解决方案假设SUCCESS / FAIL始终位于最后一个字段中,这可能不是真的。更通用的解决方案是使用awk:
awk -i inplace -F'-' '/SERVER1/ {sub($3, "FAIL")}; {print}' Backup_status.txt
-i inplace
与sed -i
-F'-'
将分隔符设置为'-'
/SERVER1/ {sub($3, "FAIL")};
将包含SERVER1
的第三个字段替换为" FAIL"。{print}
打印每一行。对于包含SERVER1
的行,它会打印更改后的版本,否则会按原样打印该行。