【发布时间】:2018-08-09 04:00:27
【问题描述】:
我无法遍历 sed 返回的存储在变量中的行。
目前看起来有点像这样
lines=$(sed -rne '/'"$timestamplastupload"'/,/'"$timestampnow"'/ p' /var/log/test.log)
for line in "$lines"; do
echo "This line is: $line"
done
但到目前为止,这还不起作用,循环一次运行一次,而 $line 变量的内容似乎是整个 $lines 变量,因此只打印一次,而不是逐行循环,前缀为“此行是:“
我缺少什么能够逐个循环遍历 sed 输出的每一行。 (最终我会逐行将匹配的行上传到 API)所以我需要单独的每一行,以便我可以根据需要处理它们。
根据要求,sed 的一些输出已针对安全性进行了调整
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452112 xxx/1.2.3.4:55487 [xxx] Inactivity timeout (--ping-restart), restarting
Wed Feb 28 22:33:11 2018 us=452180 xxx/1.2.3.4:55487 SIGUSR1[soft,ping-restart] received, client-instance restarting
Wed Feb 28 22:33:11 2018 us=452180 xxx/1.2.3.4:55487 SIGUSR1[soft,ping-restart] received, client-instance restarting
Wed Feb 28 22:33:11 2018 us=452180 xxx/1.2.3.4:55487 SIGUSR1[soft,ping-restart] received, client-instance restarting
Wed Feb 28 22:33:11 2018 us=452180 xxx/1.2.3.4:55487 SIGUSR1[soft,ping-restart] received, client-instance restarting
【问题讨论】:
-
将
sed命令的输出添加到您的问题中。 -
我建议使用
while循环或将sed的输出放入一个数组中。