2つのパターンの間(および含む)文をgrepします。

2つのパターンの間(および含む)文をgrepします。

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'

保持している実際のスキーマによっては、このアプローチが役に立つ場合もあればそうでない場合もあります。

関連情報