可能排除不正确的说法,但我说的是使用Lua的string.find下列()函数:LUA模式,排除不符合字符串的结尾工作
[^exclude]
一点也没有如果字符后面没有任何内容,IE似乎不起作用,IE是字符串中的最后一个字符。
更具体地说,我得到一个进程正在运行的列表,并试图在LUA内部解析它们。
[email protected]:/# ps | grep mpd
5427 root 21620 S mpd /etc/mpd2.conf
5437 root 25660 S mpd
这不会是一个问题,如果我可以指望每次\ n,但有时ps不会列出自己造成这个问题。我想匹配:
5437 root 25660 S mpd
从这我会提取一个kill命令的PID。我运行的OpenWRT构建不支持正则表达式或killall上的确切选项,否则我只是这样做。
(%d+ root%s+%d+ S%s+mpd[^ ])
上述模式不起作用。这是因为在我认为的最后一行中的最后一个字符之后没有字符。我也试过这些:
(%d+ root%s+%d+ S%s+mpd$)
上面的模式返回nil。
(%d+ root%s+%d+ S%s+mpd[^ ]?)
上面的图案返回第一个进程(5427)
也许有一个更好的方式去了解这一点,或者只是一个简单的模式改变我可以得到它的工作,但我可以似乎找不到一个只能抓住正确流程的人。我不能脱离PID或VSZ,因为它们是可变的。也许我必须看看能否以更好的killall支持来编译OpenWRT。
无论如何,感谢您花时间阅读本文,如果这是重复的,我很抱歉,但我找不到类似于我的困境的任何东西。任何建议,非常感谢!
是否可以使用'pgrep'?它可能有帮助。但'''模式应该匹配。你有什么循环代码来完成比赛? – 2014-12-04 21:15:44
我有pgrep,似乎没有工作。它返回两个mpd进程。我所拥有的代码只是一个javascript按钮,它将http post发送到我的openwrt路由器,它具有基于发布数据的LUA交互。所以它本质上只是一个杀死mpd的按钮,但我不想杀mpd /etc/mpd2.conf,因为这是一个音乐流,我只想杀死本地播放器。我甚至没有用它来测试,但我只是交互式地运行我的路由器运行LUA。 – 2014-12-04 21:23:31