我正在尝试编写返回仅包含短划线和空格的字符串的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));
}
答案 0 :(得分:0)
如果我理解正确,你想要grep包含 破折号和空格的字符串吗?
在这种情况下,你需要两个greps,你可以选择一个可能正确的字符串,另一个删除只包含破折号或空格的那些:
grep -E '^[- ]+$' | grep -Ev '^([-]+|[ ]+)$'
如果您尝试在perl中执行此操作,则可以完成相同的操作:
perl -ne 'print if /^([- ]+)$/m && $1 !~ /^([ ]+|[-]+)$/'