진주

진주

이 데이터가 있어요

photo for Kurtis Hardy" data-
photo for Paul Hoven" data-sr

중간 이름만 가져오도록 필터링하고 싶습니다. 이 명령을 사용하여 다음 줄을 얻습니다.

cat File| grep -E -o 'photo for.{0,20}'

답변1

여기에는 고양이가 필요하지 않습니다.고양이를 내버려두세요.

귀하의 예에서와 같이 각 이름은 "photo" 다음에 시작하고 첫 번째 ""로 끝나는 것으로 가정합니다. 그렇지 않은 경우에는 알려주시기 바랍니다. 그렇지 않으면 "이름"으로 간주되는 것이 무엇인지에 대해 더 많이 생각해야 합니다.

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까지의 모든 문자가 캡처됩니다 ".

관련 정보