0
votes

Filtrer plusieurs valeurs spécifiques à partir de la ligne de connexion Linux

J'ai des journaux avec ces types de lignes: xxx pré>

J'ai réussi à extraire des valeurs singulières hors du journal (par exemple, seule la requête) comme ceci: p>

<time> <request> <request-time>


1 commentaires

Essayez SED 'S /^ (S /^\("[^"]*"\ Demande = \ \ ("[^"] * "\ \ ([0-9.] * \ \) $ / \ 1 \ 2 \ 3 / '<< code>, voir Démo .


3 Réponses :


0
votes

avec grep xxx

basé sur la sortie, vous obtenez demande , pas méthode .


0 commentaires

0
votes

Considérez ceci à l'aide de GNU AWK pour FPAT:

$ cat tst.awk
BEGIN {
    FPAT="([^[:space:]=]+=)?(\"[^\"]+\"|[^[:space:]]+)"
    OFS=","
}
{
    f["time"] = $1
    for (i=2; i<=NF; i++) {
        tag = val = $i
        sub(/=.*/,"",tag)
        sub(/^[^=]+=/,"",val)
        gsub(/^"|"$/,"",val)
        f[tag] = "\"" val "\""
    }

    print f["time"], f["request"], f["request_time"], f["client"], f["method"]
}

$ awk -f tst.awk file
"09/Feb/2019:11:25:51 +0000","GET /flask2 HTTP/1.1","0.011","10.0.0.148","GET"


0 commentaires

0
votes

Essayez cette perl one-liner xxx

avec les entrées données xxx


0 commentaires