文字列を抽出したいログファイルがあります。数値文字列はランダムに生成され、これまでgrep/sed/awkを使用したすべての試行は失敗しました。
次の項目があります。
"id":"30c962de-b448-40ac-ade8-da6a8f49ce88","title":
私が分析したいのは、ランダムに生成された部分です。
30c962de-b448-40ac-ade8-da6a8f49ce88
このタスクを実行するための迅速で汚い方法がある人はいますか?
ベストアンサー1
速すぎて汚いですか?
$ grep -o -P '(?<=")[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}(?=")' input
30c962de-b448-40ac-ade8-da6a8f49ce88
"30c962de-b448-40ac-ade8-da6a8f49ce88"
固定長とダッシュ位置(引用符で囲む)を持つ任意の値を見つけて-
印刷します。そのセクションにもこだわりたい場合は、デフォルトの"id":
提案条件に追加してください(?<=")
。
jq
ただし、これがJSONまたは一般データの場合は、適切なパーサーを使用してそのデータ(他のデータなど)を処理することを検討する必要があります。