如何使用grep在里面用“[”和“]”过滤字符串?

时间:2014-02-13 16:49:35

标签: grep

如何过滤"<torrent:magnetURI><![CDATA[""]]></torrent:magnetURI>"内的任何内容,以便使用grep输出字符串“EXAMPLE”?

<torrent:magnetURI><![CDATA[EXAMPLE]]></torrent:magnetURI>

我正在尝试将网络中的所有磁铁网址添加到传输中。

for url in $(wget -q -O- "http://sample.com/rss.xml" | grep -o '<torrent:magnetURI><![CDATA["[^"]*' | grep -o '[^>]*$'); do 
transmission-remote localhost:9091 -a "$url"; 
done

1 个答案:

答案 0 :(得分:1)

您可以使用:

$ grep -Po '(?<=<torrent:magnetURI><!\[CDATA\[)\w*(?=\]\]>)' file
EXAMPLE

请注意,它正在使用后面的内容并期待(?<=before)\w*(?=after),同时也可以转义[

(?<=<torrent:magnetURI><!\[CDATA\[)\w*(?=\]\]>)
   ------------------------------- ---   -----
       string to find before        |    string after
                            string matched