私のログファイルには次の行があります。
<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
これを行うこともできますが、sed
XMLパーサーを使用して自分に合った行を取得する方が良いでしょう。
つまり、すべてのデータが同じ形式であると仮定し、次の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