如何用Bash精准删除文件中的Cl.且不删除Cl?
精准删除
Cl.字符串但保留Cl的Bash命令方案 需求概述
需要在文本文件中精准删除Cl.字符串,同时保留未跟.的Cl。
输入示例
Cl.CCC(N)(CC)C(=O)NC(CC(=O)O)c1ccccc1 CC(C)c1ncc(Cl)c(n1)C(=O)NCC(=O)O
期望输出
CCC(N)(CC)C(=O)NC(CC(=O)O)c1ccccc1 CC(C)c1ncc(Cl)c(n1)C(=O)NCC(=O)O
问题分析
之前尝试的sed 's/[Cl.]//g'会把C、l、.三个字符单独删除,导致Cl被误删;sed 's/\Cl.//g'的转义方式错误,\C属于无效正则写法,无法精准匹配目标字符串。
可行方案
1. 使用sed命令
精准匹配Cl.(需转义.,因为.在正则中代表任意字符),全局替换为空:
sed 's/Cl\.//g' input.txt
若需原地修改文件,Linux系统添加-i参数:
sed -i 's/Cl\.//g' yourfile.txt
macOS系统需加空参数:
sed -i '' 's/Cl\.//g' yourfile.txt
2. 使用awk命令
通过gsub函数全局替换目标字符串:
awk '{gsub(/Cl\./, "")}1' input.txt
内容的提问来源于stack exchange,提问作者BRUNO DI GERONIMO QUINTERO
相关产品推荐
相关产品推荐

