链接
没有帮助我。
我尝试过使用 Python:
import os
line='ID_SN=02 MS=DC:A6:32:7E:74:08 S=* TS=24/11/2020 11:02:30 CET N=IMC2500 MD=7F:7A:25:43:8F:44 T=LE P=90@'
cmd1="perl -sni -e 'print unless /^\Q$regex\E$/' -- -regex=%s device_scan.txt" % repr(line)
os.system(cmd1)
但是\Q
......\E
也阻止解释,\t
但我只需要解释。所以没有行被删除。
这似乎是一个相当复杂的问题,但我希望你能帮助我。
您可以使用 perl 的
-s
标志,其作用类似于 awk 的-v
选项以下是必需的,因此
--
不被视为perl选项,它留给正文。-e 'body'
-regex
此外,
-e
body 现在是单引号以使 perl 变量远离 shell使用@steeldriver 的示例:
另一种解决方法是使用 shell 参数扩展来转义斜杠。显然这会变得混乱:
可能最简单(也是最强大)的方法是将变量导出到 shell 的环境中,然后通过
ENV
哈希访问它。这样,您就不需要依赖perl 表达式中的 shell 解析,并且可以使用单引号而不是双引号$var
:我找到了解决方案:
但我有一个问题要问你@steeldriver。在这种情况下,在 perl 变量 "$regex" 中,是否有可能扩展以 "$" 或 "@" 或 "%" 开头的任何子变量?