Fir*_*300 2 unix linux bash awk sed
我有一个文件"names.xml",如下所示:
NAME="James"
NAME="Jack_DONE"
NAME="John_DONE"
NAME="Jimmy"
Run Code Online (Sandbox Code Playgroud)
我想使用单个SED行命令来查找所有出现的'NAME ="J'在'"中有'_DONE',我想从找到的所有匹配中仅删除'_DONE'.
所以结果应该是这样的:
NAME="James"
NAME="Jack"
NAME="John"
NAME="Jimmy"
Run Code Online (Sandbox Code Playgroud)
这是我使用的命令:
sed 's/^[^#]\(.*\)NAME="J\(.*\)_DONE"/\1"NAME=J\2"/' names.xml
Run Code Online (Sandbox Code Playgroud)
我相信我能以更有效的方式做到这一点!非常感谢您的时间和帮助.
使用GNU sed:仅在包含NAME="J搜索_DONE和无替换的行中.
sed '/NAME="J/{s/_DONE//}' names.xml
Run Code Online (Sandbox Code Playgroud)
输出:
NAME="James"
NAME="Jack"
NAME="John"
NAME="Jimmy"