私
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
。つまり:
sed 's/xxxx*//g'
grep
行が最初に必要な場合は、sed
後でパイプしますgrep
。つまり:
grep "https://www.instagram.com/p/" | sed 's/xxxx*//g'
保持している実際のスキーマによっては、このアプローチが役に立つ場合もあればそうでない場合もあります。