0

sed を使用して、ファイル内のパターン "[whatever]|[whatever]" を持つすべての行を検索する必要があるため、次の正規表現を使用しています。

sed '/\"[a-zA-Z0-9]+\|[a-zA-Z0-9]+\"/p' test2.txt

しかし、このファイルでは、すべきではないときに何かを返しているため、機能していません

RTV0031605951US|3160595|20/03/2013|0|"Laurie Graham"|"401"

正規表現を使用する必要があることを知っている人はいますか? 前もって感謝します

4

3 に答える 3

0

正規表現には次の 3 つの問題があります。

  1. +はメタ文字ではないため、特別な意味を得るにはエスケープする必要があります。
  2. パイプでも同様の問題が発生します。どちらもメタ文字ではないため、文字どおりに一致させるためにエスケープしないでください。
  3. Sedデフォルトでは、一致する各行を出力するため、 add -nthat を使用している場合はそれを回避します/p。そうしないと、出力にこれらの行が 2 回表示されます。
于 2013-09-04T13:21:53.550 に答える
0
sed '/\B\"[ [:alnum:]]\+\"|\"[ [:alnum:]]\+\"\B/!d' file

これをsedスクリプトで使用する場合は、二重引用符をエスケープしないでください。

于 2013-09-04T19:05:43.947 に答える
0

sed部分一致であるすべてを出力します。

正規表現に一致する行全体のみを一致させるには、開始/終了に^andを追加します。$

sed '/^\"[a-zA-Z0-9]+\|[a-zA-Z0-9]+\"$/p' test2.txt
于 2013-09-04T13:23:59.863 に答える