0

私は形の線を持っています

bla bla bla RequestId=ABCD1234EFGH bla bla bla bla ResponseId=IJKL5678MNOP bla bla bla

この行からRequestIdとResponseIdの両方を取得し、それらをセパレーターで出力する必要があります。たとえば、この特定の行の場合は次のようになります

ABCD1234EFGH|IJKL5678MNOP

で値の1つを抽出できますgrep -oe "RequestId=[0-9|a-z|A-Z|-]*"が、両方を取得するにはどうすればよいですか?

4

3 に答える 3

1

このようなものはどうですか:

awk '{
    if (!match($0, /RequestId=([-0-9a-zA-Z]*)/)) next;
    req = (substr($0, RSTART + 10, RLENGTH - 10));
    if (!match($0, /ResponseId=([-0-9a-zA-Z]*)/)) next;
    res = (substr($0, RSTART + 11, RLENGTH - 11));
    printf("%s|%s\n", req, res);
}' yourFile.txt

于 2012-08-08T22:02:58.337 に答える
0
awk '{
for(i = 1; i <= NF; i++) {
    if($i ~ /^Req/) { 
        printf $i"|||"
    }
    else {
        if($i ~ /^Res/) {
            print $i 
            }
        }
    }  
}' myfile.txt
于 2013-08-15T18:43:42.900 に答える
0

perlの使用:

$ perl -nE '$,="|"; say /(?:Request|Response)Id=([-0-9a-zA-Z]*)/g' file
ABCD1234EFGH|IJKL5678MNOP
于 2014-02-28T11:29:30.563 に答える