如何在lua中迭代并打印两列文本?

为了演示,我有一个名为output.txt的文本文件,其中包含以下简单数据:

/etc/csf/csf.deny Hello this is abc
/var/lib/csf/csf.tempip Hello this is CSF
/var/lib/csf/csf.tempban That is nice you got tempban here!
/root/blocked_ips.txt blocked ip is not great

我想将第一列存储为var1,将其余列存储为var2。由于我熟悉bash,因此可以使用以下bash代码实现:

#!/bin/bash

output="output.txt"
var1=$(awk '{ print $1 }' $output)
var2=$(awk '{$1=""; $0=$0; $1=$1; print}' $output)

while read -r var1 var2; do
    echo "Var1: $var1 , Var2: $var2"
    # -- 现在我可以在此循环中使用var1和var2做其他事情
done <"$output"

该bash脚本的输出为:

[root]# ./test
Var1: /etc/csf/csf.deny , Var2: Hello this is abc
Var1: /var/lib/csf/csf.tempip , Var2: Hello this is CSF
Var1: /var/lib/csf/csf.tempban , Var2: That is nice you got tempban here!
Var1: /root/blocked_ips.txt , Var2: blocked ip is not great

我可以在lua脚本中使用“popen”(它是来自bash脚本的包装器)来实现此目的,但是否有lua本地实现?

点赞
用户1847592
用户1847592

对于每一行在 output.txt 文件中:

  • 抽取第一个非空白字符之前的所有字符并将其存储到变量 var1
  • 抽取以第一个非空白字符之后的所有剩余字符并将其存储到变量 var2
  • 打印变量 var1
  • 打印变量 var2
    
    
for line in io.lines"output.txt" do
   local var1, var2 = line:match"(%S*)%s*(.*)"
   print(var1)
   print(var2)
end
2020-10-24 11:02:41