gpt4 book ai didi

php - 如何使用 linux 命令从日志文件中检索数据并添加到数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:16 25 4
gpt4 key购买 nike

我有一个包含这样内容的日志文件

2018/01/14 12:27:27|get_offers|ok|1678537191|64.233.173.132|info=wifi
2018/01/14 12:27:27|get_offers|ok|1678537191|64.233.173.132|info=wifi
2018/01/14 12:27:27|get_offers|ok|1678537191|64.233.173.132|info=wifi

我正在尝试分别检索数据/报价/状态/号码/IP。为此,我在运行 linux 命令的程序中使用了 PHP Yii 框架。

命令

 $dateCmd = "cat " . $file_names_str . "| awk -F '|' '{ print $1}'";
$descCmd = "cat " . $file_names_str . "| awk -F '|' '{ print $2}'";
$statusCmd = "cat " . $file_names_str . "| awk -F '|' '{ print $3}'";
$mobileCmd = "cat " . $file_names_str . "| awk -F '|' '{ print $4}'";
$ipCmd = "cat " . $file_names_str . "| awk -F '|' '{ print $5}'";

执行部分

 $date = shell_exec($dateCmd);
$desc = shell_exec($descCmd);
$status = shell_exec($statusCmd);
$mobile = shell_exec($mobileCmd);
$ip = shell_exec($ipCmd);

最后我想要一个像这样的数组并编码为 JSON。以下数组包含虚拟数据。

$rec = [
[
'date' => '2018-02-01',
'desc' => 'test descrip',
'status' => 'true',
'mobile' => '2145786695',
'ip' => '127.168.0.1',
],
[
'date' => '2018-02-01',
'desc' => 'test descrip2',
'status' => 'true',
'mobile' => '2145786695',
'ip' => '127.168.0.1',
],
[
'date' => '2018-02-01',
'desc' => 'test descrip2',
'status' => 'true',
'mobile' => '2145786695',
'ip' => '127.168.0.1',
],

];


$enc = CJSON::encode($rec);
echo $enc;

但在这种情况下,它不会像我希望的那样检索数据。我是 linux 的新手,我只想像这张图片一样逐行获取记录。 expected output

请帮我解决这个问题。

最佳答案

一个简单的 PHP 解决方案:

$lines = file("logfile.log");
foreach ($lines as $line)
{
$parts = explode("|", $line);
$result[] = [
'date' => $parts[0],
'desc' => $parts[1],
'status' => $parts[2],
'mobile' => $parts[3],
'ip' => $parts[4],
'info' => $parts[5]
];
}

header("Content-type:application/json");
echo json_encode($result);

关于php - 如何使用 linux 命令从日志文件中检索数据并添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642841/

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