我有年份数据的日志文件,我想在日志文件中读取并获取unix时间戳列并转换为人类可读的时间戳(不是字面上,只是逻辑上)。取决于时间戳。 我想创建一个基于时间的目录结构像这样(2017/05/20/13)(YYYY / MM / DD / HH)并将这些文件复制到相应的目录结构
LANG=C
if [[ -z "$1" ]]
then
if [[ -p /dev/stdin ]] # input from a pipe
then
read -r p
else
echo "No timestamp given." >&2
exit
fi
else
p=$1
fi
awk 'BEGIN {FS=OFS=":"}{$7=strftime("%Y-%m-%d %H:%M:%S",$7)} {print}'
sample.txt
这是awk命令后的日志文件示例输出,现在我想创建一个文件夹取决于日期和小时。像这样的东西
Input
counter.txt
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:103
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:102
21:-60:17086:28:0:0:2017-05-24 15:12:50:1384:0:0:0:102
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:103
文件夹结构就像 [root @ master 24-05-17] #ls -ltr | grep counter_ -rw-rw-r-- 1位用户user 11974276 5月23日12:32 counter_25.txt -rw-rw-r-- 1位用户17271141 5月23日13:32 counter_24.txt -rw-rw-r-- 1位用户16819152 5月23日14:32 counter_23.txt
输出如下:
/2017/05/24/15 - in this folder , we have to seperate the input file and write
counter_2017_05_24_15.txt
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:103
28:-58:31147:28:0:0:2017-05-24 15:12:50:3064:0:0:0:102
21:-60:17086:28:0:0:2017-05-24 15:12:50:1384:0:0:0:102
/2017/05/24/16 in this folder , I want to write the remaining data in another
new file and store seperately under the folder
counter_2017_05_24_16.txt
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:103
23:-66:33444:28:0:0:2017-05-24 16:12:50:656:0:0:0:103
10:-64:16651:28:0:0:2017-05-24 16:12:50:656:0:0:0:102
答案 0 :(得分:0)
而不是:
strftime("%Y-%m-%d %H:%M:%S")
这样做:
strftime("%d/%m/%Y")
现在您有一个DD / MM / YYYY字符串,可以将其用作路径的一部分。