删除文件名中两次出现的字符串之间的字符串

时间:2013-03-15 03:30:35

标签: linux bash

我是Linux的新手,我必须删除文件名中的特定数字字符串。

以下是我的文件名:

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV

我需要输出为:

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV   
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV

我想要移除123以及可能5345667或其他数字的位置,因此我想删除之间的字符串。 (第5次出现)和。 (第6次出现)在文件名中。

2 个答案:

答案 0 :(得分:1)

cut可以执行此操作:

pax> echo 'AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV' | cut -d. -f1-5,7-
AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV

pax> echo 'AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV' | cut -d. -f1-5,7-
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV

-d.只是将分隔符设置为.,而-f1-5,7-会为您提供除第六个以外的所有字段。

答案 1 :(得分:0)

输入.txt

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV

<强>命令

awk -F "." '{ $6=""; print $0 }' Input.txt | sed -e 's/ /\./g' -e 's/\.\./\./g'

<强>输出

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV   
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV