我有一行表格
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|-]*"但我怎样才能同时获得这两个值?
像这样的东西怎么样:
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
?
awk '{
for(i = 1; i <= NF; i++) {
if($i ~ /^Req/) {
printf $i"|||"
}
else {
if($i ~ /^Res/) {
print $i
}
}
}
}' myfile.txt
Using perl:
$ perl -nE '$,="|"; say /(?:Request|Response)Id=([-0-9a-zA-Z]*)/g' file
ABCD1234EFGH|IJKL5678MNOP