0

我正在尝试编写返回仅包含破折号和空格的字符串的 grep。

例如我有这样一段文字:

 instanceName                                                            comPort
 ----------------------------------------------------------------------- --------------------
 MS-E2E003-COM14                                                         COM14
 MS-E2E003-COM15                                                         COM15
 MS-E2E003-COM16                                                         COM16
 MS-E2E003-COM19                                                         COM19

(4 rows affected)

在此示例中,grep 返回第二个字符串: ----------------------------------------------------------------------- --------------------

"^[- ]+$" 仅返回带有破折号的字符串或仅带有空格的字符串或两者兼而有之。

我使用的命令:

foreach rw(exec_res) { # the list contains a text
    print(grep("^[- ]+$", rw));
}
4

1 回答 1

0

如果我理解正确,您想 grep 查找同时包含破折号和空格的字符串

在这种情况下,您需要两个 grep,一个用于挑选可能正确的字符串,一个用于删除仅包含破折号或空格的字符串:

grep -E '^[- ]+$' | grep -Ev '^([-]+|[ ]+)$'

编辑 - 如何用 perl 做同样的事情

如果您尝试在 perl 中执行此操作,则可以完成类似的操作:

perl -ne 'print if /^([- ]+)$/m && $1 !~ /^([ ]+|[-]+)$/'
于 2012-11-12T08:00:05.510 回答