在bash中将两位数的年份转换为四位数
我有如下格式的文件: test96abcd.TXT我提取的是两位数的年份:
echo "test96abcd.TXT" | cut -c4-5我希望能做这样的事情:
echo "test96abcd.TXT" | cut -c4-5 | date +%Y但是它不工作,更不用说我会有一个...Y2K问题(当它是00时,我不知道它是1900年还是2000年),尽管我可以用“如果00使用2000”来手动处理这个异常。
但是有没有更好的方法来使用'date‘命令来处理这个问题呢?
发布于 2019-07-07 23:46:24
$ cat ../tst.sh
#!/bin/env bash
for old; do
[[ $old =~ ^([^0-9]*)(([0-9]*).*) ]] || continue
year=${BASH_REMATCH[3]}
if (( year > 80 )); then
cent='19'
else
cent='20'
fi
new="${BASH_REMATCH[1]}${cent}${BASH_REMATCH[2]}"
mv -- "$old" "$new"
done
$ ls
test00abcd.txt test17abcd.txt test96abcd.txt
$ ../tst.sh *
$ ls
test1996abcd.txt test2000abcd.txt test2017abcd.txthttps://stackoverflow.com/questions/56923486
复制相似问题