In bash, how to retrieve string starting with a specific expression? -
given piece of file:
a=as/dsdf b=fdfsf c=vcv c=15 b=1 a=azzzz))]ee a=12 z=19 r=15 i want retrieve parts starting a=
so output in case be:
a=as/dsdf a=azzzz))]ee a=12 i've dived bash documentation couldn't find easy, have suggestion ?
thanks
i'm assuming want starting a= next space.
it's not supported versions of grep if have -o option easy:
grep -eo 'a=[^ ]+' file -o prints matching part of line. -e enables extended regular expressions, enables use + mean one or more occurrences of preceding atom*. [^ ] means character other space.
otherwise, use sed capture part you're interested in:
sed -e 's/.*(a=[^ ]+).*/\1/' file as last resort, if version of sed doesn't support extended regexes, should work on version:
sed 's/.*\(a=[^ ]\{1,\}\).*/\1/' file as rightly pointed out in comments (thanks), avoid printing lines don't match, may want use -n suppress output , add p command print lines match:
sed -ne 's/.*(a=[^ ]+).*/\1/p' file atom* : character class, marked sub-expression or single character.
Comments
Post a Comment