unix shell脚本编写错误

时间:2017-05-29 12:41:22

标签: unix awk

我想通过使用AWK命令获取文件名的一部分。例如,我的文件名将类似于ABC_20100702001500.CSV。我想从我的文件名中获取YYYYMMDD格式来创建目录。我试过

name=$(awk -F"." '{print $f}' | awk -F"_" '{print $NF}').

但它在意外令牌`name = awk'附近显示错误,如语法错误。我怎么能解决这个问题。请用正确的语法纠正我。

1 个答案:

答案 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