Mit sed auf diese Weise nicht korrekt ist, die zweite Adresse nicht erneut übereinstimmen sed nicht gegen die pattern space
(einfach gesagt, nur die aktuelle Zeile, wenn Sie nicht zu hold space
halten und es dann zu pattern space
bekommen), dass die abgestimmt erste Adresse. Die erste Adresse ist <item
und die zweite Adresse beginnt mit <item ..
. Sie werden also niemals die zweite Adresse finden, obwohl Sie den Sonderzeichen in der zweiten Adresse entkommen sind.
Zeilennummer Verwenden von Inhalten zu wählen:
$ wget -qO- https://nvd.nist.gov/download/nvd-rss-analyzed.xml > result
$ firstline="<item rdf:about=\"https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-1977\""
$ echo $firstline
<item rdf:about="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-1977"
$ start=$(grep -n "<item " result | head -n1 | awk -F\: '{print $1}')
$ end=$(grep -n "$(echo $firstline | sed 's/\//\\&/g')" result | awk -F\: '{print $1}')
echo $start $end
169 187
$ sed -n "$start,${end}p" result > output
Eine andere Methode unter Verwendung von zwei Adressen:
$ wget -qO- https://nvd.nist.gov/download/nvd-rss-analyzed.xml > result
$ firstline="<item rdf:about=\"https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-1977\""
$ firstline=$(echo $firstline | sed 's/\//\\&/g')
$ cat result | sed -n "/<item /,\${p; /$firstline/q;}"
<item rdf:about="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2007-3701">
...
<item rdf:about="https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-1977">
Verwenden 'sed -n "/-
anubhava
wenn Ich führe 'firstline =-
shellter
Ich bemerkte auch, dass ich folgenden Fehler sed erhalten: -e Ausdruck # 1, char 35: unbekannt Befehl: '/ ' – animoe