sedはこの方法を使用すると、が一致したことをpattern space
に対する再一致していない2番目のアドレス(あなたがhold space
に保持し、その後pattern space
にそれを取得しない場合は単純に現在の行を言った)はsedを、正しくありません最初のアドレス。
最初のアドレスは<item
で、2番目のアドレスは<item ..
で始まります。したがって、2番目のアドレスの特殊文字をエスケープしても、2番目のアドレスは決して一致しません。コンテンツを選択するために行番号を使用して
:
$ 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
2人の住所が使用する別の方法:
$ 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">
'sedの-n "/ <項目/、/ $ファーストライン/ P" を使用して' – anubhava
私は 'firstline =-
shellter
次のエラーが発生したことに気づきました sed:-e式#1、char 35:unknownコマンド:// – animoe