【发布时间】:2020-07-06 21:33:49
【问题描述】:
我需要通过以下方式提取日期之间的所有文本(以下格式为:月日小时):
start_marker: "Jul 3 2"
end_marker: "Jul 3 7"
来自具有以下示例格式数据的日志文件
<unneeded text>
Fri Jul 3 2:51:54:780 2020
<needed text>
<needed text>
<needed text>
Fri Jul 3 5:51:54:780 2020
<needed text>
<needed text>
Fri Jul 3 7:51:54:780 2020
<unneeded text>
我正在尝试下面的脚本,但它返回一个空白的 log_collector 文件
start_month="Jul"
start_date="3"
start_hour="2"
end_month="Jul"
end_date="3"
end_hour="7"
start_marker="$start_month $start_date $start_hour"
end_marker="$end_month $end_date $end_hour"
sed -n '/"$start_marker"/,/"$end_marker"/p' logfile >> "log_collector"
cat log_collector
【问题讨论】:
-
您的 sed 脚本用单引号括起来,因此没有变量扩展。尝试删除双引号,然后将 sed 脚本的单引号更改为双引号。
-
如果 start-/
end_hour不存在怎么办?它应该搜索最近的小时/时间字符串 x -
@alecxs 嗯,日志文件每 5 分钟更新一次,所以这是一个非常遥远的可能性。但我没有想到这一点,应该在我的问题中说清楚。感谢您的来电。
-
<needed text>中的任何一行是否可以包含看起来像日期的文本,例如Jul 3 2?如果是这样,您如何将像这样的行中的文本与您实际要匹配的日期行分开? -
嘿@EdMorton,
中没有任何看起来像日期的内容。