以下はファイルの内容ですが、「[]」に入っているチケット番号だけを出力してください。 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 後のすべての数字/
、たとえばgrep
a 前のすべての数字を印刷します]
。これらの基準に一致する他の行がある場合は、ファイル全体を表示する必要があります。