grepコマンドを使用して次の文字列の一部を取得するには?
ひも:
orange:"orange", red:"apple", purple:"grape", yellow:"banana", green:"watermelon"
red:"strawberries", yellow:"lemon"
私が望むもの:
red:"apple" yellow:"banana"
red:"strawberries" yellow:"lemon"
私はこれを試しました:
grep -oP '(red:\"[^\"]*).*(yellow:\"[^\"]*)'
ベストアンサー1
中間項目は.*
すべての項目と一致します。つまり、purple:"grape"
部分項目です。代わりに(GNU grepを使い続けると仮定すると)、(foo|bar)
「OR」構造を使用して各部分を個別に一致させます。
grep -oP '(red|yellow):\"[^\"]*"'
最後の声明を追加する必要があります"
。また、脱出する必要がないので、"
次のものを使用できます。
grep -oP '(red|yellow):"[^"]*"'
とにかく、ここにあなたのためのものがあります。
red:"apple"
yellow:"banana"
次に、線の間にスペースを置いて線を接続します。
grep -oP '(red|yellow):"[^"]*"' | paste -sd ' ' -
正直に言うと、自然に代わりsed
に使うようになりそうです。
sed -n 's/.*\(red:"[^"]*"\).*\(yellow:"[^"]*"\).*/\1 \2/p'