在ksh脚本中重命名文件

时间:2014-06-16 02:47:47

标签: shell awk

我有一个文件:

  

xpress_railway_20140519.xml

现在我需要在输出文件名中插入一个唯一的id。例如,我的输出现在应该是:

  

xpress_railway_1000(唯一ID)_20140519.xml

我该怎么做才是ksh shell脚本?这个唯一的id存在于一个名为xpress_uni_fcdm.parm的文件中,它是一个参数文件,唯一的id出现在该文件的第5行。我尝试了awkgrep,但我不确定我的输出。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

以下内容适用于ksh和任何POSIX sh ......

OLD=xpress_railway_20140519.xml
UID=$(awk 'NR == 5 { print; exit 0 }' xpress_uni_fcdm.parm)
NEW=$(printf '%s' "$OLD" | sed -e "s/_[[:digit:]]\+.xml$/_${UID}&/")
mv "$OLD" "$NEW"

你可以使用head -n5 |用于UID的tail -n1,但我认为你会发现AWK语句比两个命令的管道更有效;实际上,它只是看起来更清晰。 (使用SED也可以,但更加神秘 - 同样,AWK语句最容易扩展以过滤掉任何碎屑。)

经过测试:

$ ksh --version
  version         sh (AT&T Research) 93u+ 2012-08-01