Reputation: 87
Anyone familiar with how to use regex grab the following expression:
Random1 `json:"random1"`
Random2 `json:"random2"`
Random3 `json:"random3"`
desired output:
random1
random2
random3
What I have tried so far:
Try one:
grep -o '(\".*?\")' example1.file
Try two:
grep -o '\"*\"' example1.file
returned nothing
This returns everything but just want the substring:
Attempt 3
grep -E "\"(.*)\"" example1.file
Expected output:
random1
random2
random3
Upvotes: 1
Views: 67
Reputation: 911
Using sed
:
sed -E 's/^.*"(.*)"`$|.*/\1/g' example1.file
This (the |.*
part) also clears lines without a match. Which then can be easily filtered out with ... | grep .
Upvotes: 1
Reputation: 88999
With GNU grep and a Perl-compatible regular expression:
grep -Po '(?<=").*(?=")' file
Output:
random1 random2 random3
Upvotes: 1
Reputation: 782693
You need to use -P
with lookarounds, so that the quotes won't be included in the match.
grep -o -P '(?<").*(?=")' example1.file
This requires GNU grep
to get the -P
option for PCRE.
Upvotes: 1