0

我有一行表格

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

我需要从这一行获取 RequestId 和 ResponseId 并用分隔符输出它们。例如,对于这个特定的行,它将是

ABCD1234EFGH|IJKL5678MNOP

我可以提取其中一个值,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

Using perl:

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