
このデータがあります。
photo for Kurtis Hardy" data-
photo for Paul Hoven" data-sr
中間名のみを取得するようにフィルタリングしたいと思います。このコマンドを使用して、次の行を取得します。
cat File| grep -E -o 'photo for.{0,20}'
答え1
ここに猫は必要ありません。猫を放っておきます。
あなたの例のように、各名前は「写真」の後に始まり、最初の「」で終わると仮定します。そうでない場合はお知らせください。それ以外の場合は、「名前」と見なされるものについてもっと考える必要があります。
grep -E 'photo for [^"]{0,20}"' File | sed 's/photo for \([^"]\{0,20\}\)".*/\1/'
それとももっと簡単です:
sed -n 's/photo for \([^"]\{0,20\}\)".*/\1/p' File
答え2
真珠
cat File | perl -nE'm/^photo for ([^"]+)/ && say $1'
または
perl -nE'm/^photo for ([^"]+)/ && say $1' File
これによりプレフィックスが削除されます。photo for
までのすべての文字がキャプチャされます"
。