从文件名中提取字符串

时间:2010-01-04 13:57:34

标签: sed awk sh

我的脚本采用R#TYPE.TXT形式的文件名(#是数字,TYPE是两个或三个字符)。 我希望我的脚本给我TYPE。我该怎么做才能得到它?我猜我需要使用awk和sed。

我正在使用/ bin / sh(这是一项要求)

3 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西。

$ echo R3cf.txt | sed "s/.[0-9]\(.*\)\..*/\1/"

cf

如果txt始终为大写,并且文件名始终以R开头,则可以执行类似的操作。

$ echo R3cf.txt | sed "s/R[0-9]\(.*\)\.TXT/\1/"

答案 1 :(得分:1)

你可以使用awk

$ echo R1CcC.TXT | awk '{sub(/.*[0-9]/,"");sub(".TXT","")}{print}'
CcC

$ echo R1CcC.TXT | awk '{gsub(/.*[0-9]|\.TXT$/,"");print}'
CcC

如果sed真的是你想要的

$ echo R9XXX.TXT | sed 's/R[0-9]\(.*\)\.TXT/\1/'
XXX

答案 2 :(得分:0)

你可以只使用shell(取决于bin/sh是什么shell:

f=R9ABC.TXT
f="${f%.TXT}"       # remove the extension
type="${f#R[0-9]}"  # remove the first bit
echo "$type"        # ==> ABC