0

ダッシュと空白のみを含む文字列を返す grep を作成しようとしています。

たとえば、次のようなテキストがあります。

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

(4 rows affected)

この例では、grep は 2 番目の文字列を返します。 ----------------------------------------------------------------------- --------------------

"^[- ]+$" は、ダッシュのみの文字列、空白のみの文字列、またはその両方を返します。

私が使用するコマンド:

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

1 に答える 1

0

私の理解が正しければ、ダッシュとスペースの両方を含む文字列を grep したいですか?

その場合、2 つの grep が必要です。1 つは潜在的に正しい文字列を選択し、もう 1 つはダッシュまたはスペースのみを含むものを削除します。

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

編集 - perl で同じことを行う方法

これを perl で行おうとしている場合は、次のようにして同じことを達成できます。

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