【发布时间】:2022-01-28 05:30:09
【问题描述】:
所以我有这个包含时间戳的文件。
cat file
2022/01/27-00:47:05;2022/01/27-00:47:05;
2022/01/27-00:47:06;2022/01/27-00:47:06;
2022/01/27-00:48:59;2022/01/27-00:48:59;
2022/01/27-01:38:06;2022/01/27-01:38:06;
2022/01/27-01:45:17;2022/01/27-01:45:17;
2022/01/27-01:47:46;2022/01/27-01:47:47;
<bunch of lines>
2022/01/27-15:00:01;2022/01/27-15:00:01;
2022/01/27-15:00:05;2022/01/27-15:00:05;
2022/01/27-15:00:06;2022/01/27-15:00:06;
我试图创建一个 for 循环来隔离所有第一个字段为 2022/01/27-hour:.
的行到目前为止,这是我想出的,但它不起作用:
for var in {00..23}
do
awk -F ';' -v var="$var" '$1 ~2022/01/27-var"' file > $var.txt
done
我没有得到任何输出。
试图完成的是获取 24 个文件,其内容是每小时的时间戳。
00.txt:第一个字段与 2022-01-27-00
匹配的所有行01.txt:第一个字段匹配 2022-01-27-01
的所有行…/…
23.txt:第一个字段匹配 2022-01-27-23
的所有行我显然遗漏了一些东西,但我不知道是什么,因为其他东西似乎工作得很好。
for kk in {00..23}
do
echo | awk -v kk="$kk" '{print kk}'
done
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
我一定是以错误的方式传递变量。
任何帮助将不胜感激。
【问题讨论】:
-
是的,完全正确:我没有得到任何输出。根据循环替换,预期输出应该是第一个字段包含 2022/01/27-$var: 2022/01/27-00, 2022/01/27-01 的所有行。
-
您的输入文件中是否保证在目标日期的每个小时内都有条目?如果不是,是否应该创建该小时的空输出文件?