我有一个文件:
xpress_railway_20140519.xml
现在我需要在输出文件名中插入一个唯一的id。例如,我的输出现在应该是:
xpress_railway_1000(唯一ID)_20140519.xml
我该怎么做才是ksh shell脚本?这个唯一的id存在于一个名为xpress_uni_fcdm.parm
的文件中,它是一个参数文件,唯一的id出现在该文件的第5行。我尝试了awk
和grep
,但我不确定我的输出。你能帮忙吗?
答案 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