我想通过使用AWK命令获取文件名的一部分。例如,我的文件名将类似于ABC_20100702001500.CSV。我想从我的文件名中获取YYYYMMDD格式来创建目录。我试过
name=$(awk -F"." '{print $f}' | awk -F"_" '{print $NF}').
但它在意外令牌`name = awk'附近显示错误,如语法错误。我怎么能解决这个问题。请用正确的语法纠正我。
答案 0 :(得分:0)
您可能希望仅在Bash中执行此操作。
假设:
$ st="ABC_20100702001500.CSV"
您可以使用参数扩展来移除前部和后部:
$ tmp="${st#*_}"
$ echo "${tmp%.*}"
20100702001500
或者,Bash也具有正则表达式功能:
$ [[ $st =~ ^[^_]*_([^.]+) ]] && echo ${BASH_REMATCH[1]}
20100702001500
或者,如果你有一个旧的非Bash shell,请使用sed
:
$ echo "$st" | sed -E 's/^[^_]*_//; s/\..*$//'
20100702001500