我想提取以
https://www.instagram.com/p/
并结束于
/
例如,我想提取以下不带 x 的内容
××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××
我已经尝试过了
grep "https://www.instagram.com/p/*/"
但是,它不起作用。
答案1
尝试以下正则表达式,https://www.instagram.com/p/[^/]\+/
#!/bin/bash
data="××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××"
echo "$data" | grep -o 'https://www.instagram.com/p/[^/]\+/'
神奇的部分是[^/]\+/
,它抓住一切直到并包括下一个正斜杠。
上述脚本的示例输出。
zb@server ~ $ ./tmp.sh
https://www.instagram.com/p/BRhNDg5jne7/
答案2
使用 grep :
echo "××××××https://www.instagram.com/p/BRhNDg5jne7/××××××××" | grep -Po "(?s)(http(.*?)(\/p\/.*\/|\/\Z))"
输出:
https://www.instagram.com/p/BRhNDg5jne7/
答案3
不需要 perl 正则表达式 你可以尝试:
grep -o "https://www.instagram.com/.*/"
答案4
编辑:由于自从我发布答案以来问题发生了一些变化,所以我对它的理解也发生了变化。
如果您的所有行都有该模式xxxx
,那么您所要做的就是将正则表达式替换为sed
。 IE:
sed 's/xxxx*//g'
如果您首先需要grep
行,请sed
在 后进行管道传输grep
。 IE:
grep "https://www.instagram.com/p/" | sed 's/xxxx*//g'
根据您拥有的实际模式,这种方法可能有用也可能没用。