I have file test1.txt file, i am trying to read variable which is enclosed in double quotes and starting with hyphen for eg: “-color“. i trying to use this grep command cat test1.txt | grep getParm | sed ‘s/getParm(/ /;s/&/ /;s/,/ /;s/”/ /g’ | awk ‘{print $3}’ , where i am not able to read exact data for all variables present in file. for some of variables which is enclosed in if…else condition i don’t get exact data. Please help me to read the data required. i have posted required data in question.
cat test1.txt | grep getParm if(!param.getParm(buf, "-logFile")) parameters()->getParm(&color, "-color"); if (param.getParm(&species, "-species")) if (param.getParm(&width, "-width")) if (param.getParm(&xferLength, "-length")) else if (param.getParm(&xferLength, "-LargeTransferLength")) if (param.getParm(&cmdLineIoParms->pattern, "-pattern")) param.getParm(&cmdLineParams->volume,"-volume");
cat test1.txt | grep getParm | sed 's/getParm(/ /;s/&/ /;s/,/ /;s/"/ /g' | awk '{print $3}' -logFile -color species width xferLength (param. cmdLineIoParms->pattern -volume
expected ouput:-
-logFile -color -species -width -length -LargeTransferLength -pattern -volume
Advertisement
Answer
With GNU grep, positiv lookbehind, a non-greedy *
and positiv lookahead:
... | grep -oP '(?<=")-.*?(?=")'
Output:
-logFile -color -species -width -length -LargeTransferLength -pattern -volume