効率的な正規表現(所有格が望ましい)を探しています。これを使用して、大きなファイル(5Gb)から1つの区切り文字('、')のみを含む行をgrepすることができます。
例えば
X,Y
X1,Y1,Y2
X3,Y3
X4,Y4
X5,Y5,Z6
>>> grep "???" big_file
X,Y
X3,Y3
X4,Y4
効率的な正規表現(所有格が望ましい)を探しています。これを使用して、大きなファイル(5Gb)から1つの区切り文字('、')のみを含む行をgrepすることができます。
例えば
X,Y
X1,Y1,Y2
X3,Y3
X4,Y4
X5,Y5,Z6
>>> grep "???" big_file
X,Y
X3,Y3
X4,Y4
文字列の開始/終了マーカーがあるため、単純^[^,]*,[^,]*$
にバックトラックを避けるべきではありませんか?
@Rawling(ここでの答えの1つ)は正しく、彼の正規表現は正しいですが、それでも所有格ではないため最適化されていません。バックトラックが発生しないことは正しいですが、所有格があるため、最高のパフォーマンスにはなりません。数量詞は、バックトラック位置を覚えておく必要はありません。質問に添付されたリンクで言及されたように。
次の式は所有格と最適化されます。質問で尋ねられたように、grepの使用とともにデモンストレーションします。
grep -E "^ [^、] * +、[^、] * + $" big_data