【发布时间】:2016-09-17 20:37:44
【问题描述】:
我有一堆文件名由下划线和点组成,这里是一个例子:
META_ALL_whrAdjBMI_GLOBAL_August2016.bed.nodup.sortedbed.roadmap.sort.fgwas.gz.r0-ADRL.GLND.FET-EnhA.out.params
我想删除包含.bed.nodup.sortedbed.roadmap.sort.fgwas.gz. 的部分,因此预期的文件名输出将是META_ALL_whrAdjBMI_GLOBAL_August2016.r0-ADRL.GLND.FET-EnhA.out.params
我正在使用这些 sed 命令,但没有一个可以工作:
stringZ=META_ALL_whrAdjBMI_GLOBAL_August2016.bed.nodup.sortedbed.roadmap.sort.fgwas.gz.r0-ADRL.GLND.FET-EnhA.out.params
echo $stringZ | sed -e 's/\([[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.\)//g'
echo $stringZ | sed -e 's/\[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.[[:lower:]]\.//g'
任何解决方案都是 sed 或 awk 都会有很大帮助
【问题讨论】:
-
那么你想从所有这些文件名中删除完全相同的子字符串(即
bed.nodup.sortedbed.roadmap.sort.fgwas.gz.)吗? -
是的@redneb,相同的子字符串在文件名中重复。我试图使用正则表达式来匹配子字符串
-
如果你有一个固定的子字符串,你需要正则表达式做什么?只需使用子字符串本身作为模式。
-
我想要一些更通用的东西,因为我还有另一个文件具有类似的模式,但这次每个文件中的子字符串都发生了变化
-
如果每个文件中的子字符串发生变化,那么在你的问题中说清楚,我们会给你最合适的答案。到目前为止,您接受的答案远不是解决问题的好选择。