チケット番号のみを印刷するにはどうすればよいですか?

チケット番号のみを印刷するにはどうすればよいですか?

以下はファイルの内容ですが、「[]」に入っているチケット番号だけを出力してください。 sedコマンドとgrepコマンドを使用してこれを実行できるかどうかを知りたいです。

[request://Problem/26727777] SSO Components (UAT)
[request://Problem/25709048] [SERVER-SETUP] Setup 14xMDN, 10xPRN 
[request://Problem/26716590] Logs not populated properly from all servers
[request://Problem/23995808] Prod: Create requestmary

出力は次のようになります。

26727777
25709048
26716590
23995808

試してみましたが、sed -e 's/[^0-9]//g' ticket | sed '/^$/d'目的の結果が得られませんでした。行には他の数値も含まれているので、チケット番号を確認するだけです。

226829515211
226855182
2268555334
226819615
226781310
226853999
226828948216

ベストアンサー1

GNUを使用できますgrep

$ grep -oP '/\K\d+(?=])' ticket 
26727777
25709048
26716590
23995808

またはsed:

sed -E 's#.*/([0-9]*).*#\1#g' ticket
26727777
25709048
26716590
23995808

上記の両方が提供された例では機能しますが、実際のファイルで機能するかどうかはファイルの異なる行によって異なります。 a 後のすべての数字/、たとえばgrepa 前のすべての数字を印刷します]。これらの基準に一致する他の行がある場合は、ファイル全体を表示する必要があります。

おすすめ記事