匹配 csv 文件中的文本,用于 X 首行和最后 X 个结果,并在 lua 中获取值
Posted
技术标签:
【中文标题】匹配 csv 文件中的文本,用于 X 首行和最后 X 个结果,并在 lua 中获取值【英文标题】:match text in a csv file, for the X firsts lines and the last X results and get a value in lua 【发布时间】:2022-01-07 23:23:55 【问题描述】:我正在将一个 bash 脚本翻译成一个 Lua 程序。在 bash 脚本中有一行:
mapfile -t vol < <( cat csv_file | head -$id | grep locateme | tail -3 | cut -f6 -d\,)
结果是:
vol[0]=22
vol[1]=33
vol[2]=44
csv_file 是这样的:
16,a,b,c,d,9,16,0,3,65,0,0,locateme
16,a,b,c,d,11,16,0,3,65,0,0,notme
16,a,b,c,d,22,16,0,3,65,0,0,locateme
16,a,b,c,d,33,16,0,3,65,0,0,locateme
16,a,b,c,d,32,16,0,3,65,0,0,notme
16,a,b,c,d,44,16,0,3,65,0,0,locateme
我需要一个结果与 bash 相同的表:
vol[1]=22
vol[2]=33
vol[3]=44
拜托,我不知道如何开始
【问题讨论】:
this thread 有帮助吗? 【参考方案1】:您将使用 Lua 表而不是 Bash 数组。
local vol =
您需要 generic for loop 和 file:lines(...) 迭代器。通读整个io library 是个好主意。
这将允许您将 csv 文件的每一行作为字符串进行进一步处理。
不,您需要Lua's string library。有多种方法可以做到这一点。一种选择是使用另一个带有 string.gmatch 的通用 for 循环和一个合适的字符串模式来捕获您感兴趣的值。
【讨论】:
以上是关于匹配 csv 文件中的文本,用于 X 首行和最后 X 个结果,并在 lua 中获取值的主要内容,如果未能解决你的问题,请参考以下文章