テキストファイルのgrep中括弧エントリ

テキストファイルのgrep中括弧エントリ

たとえば、中かっこ内に多くの単語を含むファイルがあります。 {test1}、{test2} -grepこれらの単語を処理して他のリストを出力するにはどうすればよいですか?

出力例:

{test1}
{test2}

私はこれを無駄にしようとしました。

grep -o {.*} file.xml  | sort | uniq

修正する

実際 - これはうまくいくようです:

grep -oP '{.*?}' file.xml | sort | uniq

ベストアンサー1

最初の試みには2つの問題があります。{.*}シェル拡張から保護する必要がある特殊文字を含みます。パターンを引用符で囲みます。また、{.*}行で角かっこで区切られた最も長いテキストが一致するため、それを含む行がある場合はmatchによってhello {test1} world {test2} howdy出力されます。{test1} world {test2}.*test1} world {test2

以下は角かっこの間にある内容だけを出力します。

grep -o -e "{[^}]*}" 

私の元の式は "{.*}" を使用していますが、行内の最小の角かっこではなく、最も広い角かっこを見つけることが返されます。

おすすめ記事