在服务器上远程运行的bash脚本中使用grep时出现问题

我正在使用通过ssh在服务器上远程运行的脚本。 在脚本内部,我从下面使用此行:

ls | grep -oP "\d{4} -\d{2}-\d{2}"

在运行Ubuntu的本地计算机上,脚本运行正常。 但是当我尝试远程运行它时,我得到了

grep: invalid option -- 'P'
BusyBox v1.24.1 multi-call binary.
Usage: grep [-HhnlLoqvsriwFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN/...-f file [FILE]...

我尝试过的第一件事是别名问题

type grep

输出为:grep is /bin/grep我认为可以。

让我担心的是BusyBox(我不知道它是什么),但是我认为这可能是问题所在?

elle_131 回答:在服务器上远程运行的bash脚本中使用grep时出现问题

对于POSIX BRE(无选项)或ERE([0-9]选项),您可以使用[[:digit:]] / \d代替-E

grep -o "[0-9]\{4\} -[0-9]\{2\}-[0-9]\{2\}"
grep -oE "[0-9]{4} -[0-9]{2}-[0-9]{2}"

请注意,在第一个命令中,由于未转义的{}与POSIX BRE正则表达式中的文字括号符号匹配,因此您需要对括号进行转义。逃逸时,它们表示 range interval limiting )量词。在第二个命令中,POSIX ERE已通过-E启用,其行为是相反的:大括号被转义时,它们是文字字符,否则它们是量词。

本文链接:https://www.f2er.com/3146028.html

大家都在问