이 데이터가 있어요
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
까지의 모든 문자가 캡처됩니다 "
.