加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从字符串中删除两个子字符串

发布时间:2020-12-15 21:15:59 所属栏目:安全 来源:网络整理
导读:我有一个像这样的文件列表: wgEncodeCaltechRnaSeqGm12878R1x75dFastqRep1.fastq.trim.tags.samwgEncodeCaltechRnaSeqGm12878R1x75dFastqRep2.fastq.trim.tags.samwgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep1.fastq.trim00.tags.samwgEncodeCshlLong
我有一个像这样的文件列表:

wgEncodeCaltechRnaSeqGm12878R1x75dFastqRep1.fastq.trim.tags.sam
wgEncodeCaltechRnaSeqGm12878R1x75dFastqRep2.fastq.trim.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep1.fastq.trim00.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep1.fastq.trim01.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep1.fastq.trim02.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep2.fastq.trim00.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep2.fastq.trim01.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd1Rep2.fastq.trim02.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd2Rep1.fastq.trim00.tags.sam
wgEncodeCshlLongRnaSeqGm12878CellPapFastqRd2Rep1.fastq.trim01.tags.sam

我想从文件名中删除Rd1,Rd2和.sam stings.使用以下bash脚本,我可以使用两个命令删除Rd1,Rd2和.sam字符串….

for i in $(ls)

do

echo "${i/Rd?/}"
echo "${i/.sam/}"

done

但我想知道如何一步完成两个替换
你知道怎么做吗?

谢谢你的时间!

解决方法

您可以使用扩展模式在bash中完成所有操作.

shopt -s extglob
echo ${i//@(Rd?|.sam)}

这是细分:

>使用//替换所有出现的模式,而不仅仅是第一个模式.
> @(Rd?| .sam)是一个扩展模式,它匹配Rd?或.sam.该
?管道将两个子图案分开.

从技术上讲,你希望能够避免从单词的中间删除“.sam”,但看起来这对你的用例是安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读