我有文件名1_1.lot.01-APR-2014-07:17.asc_19
。我想删除时间戳而不是扩展名。例如,在sed 1_1.lot.asc_19
怎么做?
答案 0 :(得分:1)
删除时间戳
sed 's#\(1_1\.lot\)\(.*\)\(\.asc_19\)#\1\3#'
(or)
sed 's/\([^\.]\+[^\.]\+\).*\(\..*\)/\1\2/'
答案 1 :(得分:0)
试试这个awk
版本
awk -F"." '{print $1"."$2"."$4}' FileName
替换扩展名
awk -F"." '{print $1"."$2".gdf"}' FileName
输出
1_1.lot.asc_19
Sed
版本仅删除了时间戳
sed 's/[0-9]\{2\}-[A-Z]\+[^.]\+.//' FileName
答案 2 :(得分:0)
删除时间戳
sed 's/[^.]*\(\.[^.]*\)$/\1/'
说明:
$
末尾)是获取模式的引用,因此从结尾读取正则表达式以便理解\.[^.]*
是以点开头的最大内容(\.
由于元字符.
而被转义)并且在下一个引用之前不会包含点([^.]*
) (在这种情况下结束)。在这种情况下,它会给你的扩展\( \)
是将内容分组并保留在内存中[^.]*
,如前所述,最大的内容没有点(在这种情况下是你的日期)\1
是内存插槽1(搜索中的第一个组)的内容,在这种情况下是扩展名。事实上不包括日期。还将ext asc 更改为 gdf
sed 's/[^.]*\.asc\([^.]*\)$/.gdf\1/'