ログからいくつかの行を抽出します。

ログからいくつかの行を抽出します。

私のログファイルには次の行があります。

<ROW USER_GID="TEST 1" FLOW="Norm" SEQUENCE="9"/>
<ROW USER_GID="TEST 2" FLOW="Norm" SEQUENCE="2"/>
<ROW USER_GID="TEST 3" FLOW="Norm" SEQUENCE="2"/>

USER_GID各行の値を抽出しようとしています。grep/awkまたはコマンドを使用してsed同じことを実行できますか?

上記の場合、出力は次を返す必要があります。

TEST 1 
TEST 2
TEST 3

答え1

これを行うこともできますが、sedXMLパーサーを使用して自分に合った行を取得する方が良いでしょう。

つまり、すべてのデータが同じ形式であると仮定し、次のsedコマンドを使用できます。

sed -n 's/.*USER_GID="\([^"]*\)".*/\1/p' log_file

答え2

次のawkコマンドで完了します。

awk -F '"' '/USER_GID/{print $2}' filename

出力

TEST 1
TEST 2
TEST 3

関連情報