gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:10:29 26 4
gpt4 key购买 nike

我有一个这样的文件列表:

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 字符串。使用以下 bash 脚本,我可以使用两个命令删除 Rd1、Rd2 和 .sam 字符串....

for i in $(ls)

do

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

done

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

感谢您的宝贵时间!

最佳答案

您可以使用扩展模式在 bash 中完成这一切。

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

这是分割:

  1. 使用 // 替换所有出现的模式,而不仅仅是第一个。
  2. @(Rd?|.sam) 是一个扩展模式,匹配 either Rd?.sam。这 管道分隔两个子模式。

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

关于string - 从字符串中删除两个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11056320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com