grep(1) -oPm1 '(?<=href=")[^"]+' file
print lines matching a pattern
-o, --only-matching
       Print  only  the  matched  (non-empty) parts of a matching line, with each such part on a separate
       output line.
-P, --perl-regexp
       Interpret PATTERN as a Perl regular expression (PCRE, see below).  This is highly experimental and
       grep -P may warn of unimplemented features.
-m NUM, --max-count=NUM
       Stop reading a file after NUM matching lines.  If the input is standard input from a regular file,
       and NUM matching lines are output, grep ensures that the standard  input  is  positioned  to  just
       after the last matching line before exiting, regardless of the presence of trailing context lines.
       This enables a calling process to resume a search.  When grep stops after NUM matching  lines,  it
       outputs  any  trailing  context  lines.  When the -c or --count option is also used, grep does not
       output a count greater than NUM.  When the -v or --invert-match option is also  used,  grep  stops
       after outputting NUM non-matching lines.
grep searches the named input FILEs (or standard input if no files are named, or if a single hyphen-minus
(-) is given as file name) for lines containing a match to the given PATTERN.  By  default,  grep  prints
the matching lines.
source manpages: grep