Grep返回仅包含短划线和空格的字符串

时间:2012-11-12 07:14:01

标签: grep

我正在尝试编写返回仅包含短划线和空格的字符串的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));
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要grep包含 破折号和空格的字符串吗?

在这种情况下,你需要两个greps,你可以选择一个可能正确的字符串,另一个删除只包含破折号或空格的那些:

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

编辑 - 如何使用perl

执行相同的操作

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

perl -ne 'print if /^([- ]+)$/m && $1 !~ /^([ ]+|[-]+)$/'