在Bash中从文件名中提取信息

时间:2015-04-25 18:31:23

标签: bash shell unix awk

假设我有一个名为ABC_DE_FGHI_10_JK_LMN.csv的文件。我想借助ID位置和文件名分隔符从文件名中提取ID,即10。我有两个输入

File-name_ID_Position=4; [since 10 is at fourth position in file-name]
File-name_Delimiter="_";

此处ID可以是数字或字母数字。那么如何借助上面两个输入从上面的文件中提取10。如何在bash中实现这一点?

1 个答案:

答案 0 :(得分:2)

我没有在bash中编写正则表达式,而是使用awk:

echo 'ABC_DE_FGHI_10_JK_LMN.csv' | awk -F_ -v pos=4 '{print $pos}'

或者如果你想让点也是一个分隔符(需要GNU awk):

echo 'ABC_DE_FGHI_10_JK_LMN.csv' | awk -F'[_.]' -v pos=4 '{print $pos}'