You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅移除文件中'subject'与'_querry'之间的所有点号

需求与解决方案

场景

先通过以下命令生成test2文件:

touch test2
echo "refH.fasta = ref/GCA_013924565.1_ASM1392456v1_genomic.fasta" >> test2
echo "subjectGCA_017717955.1_PDT000990484.1_genomic_querry.fasta = GCA_017717955.1_PDT000990484.1_genomic.fasta" >> test2
echo "file=subjectGCA_017717955.1_PDT000990484.1_genomic_querry" >> test2

需求

只删除文件中subject和_querry之间的所有点号,其他位置的点号保留,最终输出如下:

refH.fasta = ref/GCA_013924565.1_ASM1392456v1_genomic.fasta
subjectGCA_0177179551_PDT0009904841_genomic_querry.fasta = GCA_017717955.1_PDT000990484.1_genomic.fasta
file=subjectGCA_0177179551_PDT0009904841_genomic_querry

解决方案

方法1:使用awk

awk '{
    while (match($0, /subject.*_querry/)) {
        target = substr($0, RSTART, RLENGTH)
        gsub(/\./, "", target)
        $0 = substr($0, 1, RSTART-1) target substr($0, RSTART+RLENGTH)
    }
    print
}' test2

逻辑:循环匹配每行中subject到_querry的片段,提取后清空其中的点号,再把处理后的片段替换回原行,最后输出修改后的内容。

方法2:使用Perl一行命令

perl -pe 's/(subject)(.*?)(_querry)/$1 . $2 =~ s|\.||gr . $3/ge' test2

逻辑:用正则捕获三个部分——subject、中间内容、_querry,对中间部分执行点号删除操作,再拼接三部分输出。/ge修饰符允许在替换时嵌入代码逻辑,s|\.||gr返回去除点号后的字符串。

内容的提问来源于stack exchange,提问作者Panos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:42:44