我有一个像这样的文件列表:
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
Run Code Online (Sandbox Code Playgroud)
我想从文件名中删除Rd1,Rd2和.sam stings.使用以下bash脚本,我可以使用两个命令删除Rd1,Rd2和.sam字符串....
for i in $(ls)
do
echo "${i/Rd?/}"
echo "${i/.sam/}"
done
Run Code Online (Sandbox Code Playgroud)
但我想知道如何一步完成两次换人你知道怎么做吗?
谢谢你的时间!
您可以使用扩展模式完成所有操作bash.
shopt -s extglob
echo ${i//@(Rd?|.sam)}
Run Code Online (Sandbox Code Playgroud)
这是细分:
//替换所有匹配模式,而不只是第一个.@(Rd?|.sam)是一个扩展的图案,它匹配任一 Rd?或.sam.管道将两个子图案分开.从技术上讲,您希望能够避免从单词的中间删除".sam",但看起来这对您的用例是安全的.
| 归档时间: |
|
| 查看次数: |
2961 次 |
| 最近记录: |