gpt4 book ai didi

shell - 提取两个字符串之间的文本。这些字符串有空格并保存在变量中

转载 作者:行者123 更新时间:2023-12-04 16:18:21 26 4
gpt4 key购买 nike

我需要按以下方式提取日期之间的所有文本(以下格式为:Month Day Hour):

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_month=Jul
+ start_date=3
+ start_hour=2
+ end_month=Jul
+ end_date=3
+ end_hour=7
+ start_marker='Jul 3 2'
+ end_marker='Jul 3 7'
+ sed -n '/"$start_marker"/,/"$end_marker"/p' logfile
+ cat log_collector
...empty file
而是尝试:
sed -n "/${start_marker}/,/${end_marker}/p" logfile >> "log_collector"
结果:
+ variables...
+ sed -n '/Jul 3 2/,/Jul 3 7/p' logfile
+ cat log_collector
Fri Jul 3 2:51:54:780 2020
text...
您的脚本现在将根据需要输出变量。
但是当你将 *_marker 用于相同的值时,我真的不明白使用 start_* 和 end_* 变量的意义,但也许这只是一个糟糕/令人困惑的例子:)
提示:使用“bash -x”启动脚本或添加“set -x”,您将看到脚本是如何启动的。
编辑:我在您的评论中看到 Bill Jetzer 更快,但请参见上面的示例。

关于shell - 提取两个字符串之间的文本。这些字符串有空格并保存在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62724179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com