Print all the instances of a matching pattern in a file
I've been trying to print all the instances of a matching pattern from file.
Input file:
{"id":"prod123","a":1.3,"c":"xyz","q":2},
{"id":"prod456","a":1.3,"c":"xyz","q":1}]}
{"id":"prod789","a":1.3,"currency":"xyz","q":2},
{"id":"prod101112","a":1.3,"c":"xyz","q":1}]}
I'd want to print everything between "id":"
and ",
.
Expected output:
prod123
prod456
prod789
prod101112
I'm using the command
grep -Eo 'id":"[^"]+"",*' | grep -Eo '^[^"]+'
Am I missing anything here?
bash awk sed grep
add a comment |
I've been trying to print all the instances of a matching pattern from file.
Input file:
{"id":"prod123","a":1.3,"c":"xyz","q":2},
{"id":"prod456","a":1.3,"c":"xyz","q":1}]}
{"id":"prod789","a":1.3,"currency":"xyz","q":2},
{"id":"prod101112","a":1.3,"c":"xyz","q":1}]}
I'd want to print everything between "id":"
and ",
.
Expected output:
prod123
prod456
prod789
prod101112
I'm using the command
grep -Eo 'id":"[^"]+"",*' | grep -Eo '^[^"]+'
Am I missing anything here?
bash awk sed grep
2
Do you havejq
installed?
– anubhava
Nov 14 '18 at 17:18
2
Your output seems to be agrep
or whatever on a JSON file. You might be interested in usingjq
on your full file. But for this, we should need to see how this thing looks like.
– kvantour
Nov 14 '18 at 17:27
1
Use some JSON parser, whether it bejq
or a module in your language of choice. Don't use line-oriented tools likegrep
orawk
to try to parse JSON.
– chepner
Nov 14 '18 at 17:27
add a comment |
I've been trying to print all the instances of a matching pattern from file.
Input file:
{"id":"prod123","a":1.3,"c":"xyz","q":2},
{"id":"prod456","a":1.3,"c":"xyz","q":1}]}
{"id":"prod789","a":1.3,"currency":"xyz","q":2},
{"id":"prod101112","a":1.3,"c":"xyz","q":1}]}
I'd want to print everything between "id":"
and ",
.
Expected output:
prod123
prod456
prod789
prod101112
I'm using the command
grep -Eo 'id":"[^"]+"",*' | grep -Eo '^[^"]+'
Am I missing anything here?
bash awk sed grep
I've been trying to print all the instances of a matching pattern from file.
Input file:
{"id":"prod123","a":1.3,"c":"xyz","q":2},
{"id":"prod456","a":1.3,"c":"xyz","q":1}]}
{"id":"prod789","a":1.3,"currency":"xyz","q":2},
{"id":"prod101112","a":1.3,"c":"xyz","q":1}]}
I'd want to print everything between "id":"
and ",
.
Expected output:
prod123
prod456
prod789
prod101112
I'm using the command
grep -Eo 'id":"[^"]+"",*' | grep -Eo '^[^"]+'
Am I missing anything here?
bash awk sed grep
bash awk sed grep
edited Nov 14 '18 at 17:15
oguzismail
3,72031125
3,72031125
asked Nov 14 '18 at 17:09
VenkatVenkat
63
63
2
Do you havejq
installed?
– anubhava
Nov 14 '18 at 17:18
2
Your output seems to be agrep
or whatever on a JSON file. You might be interested in usingjq
on your full file. But for this, we should need to see how this thing looks like.
– kvantour
Nov 14 '18 at 17:27
1
Use some JSON parser, whether it bejq
or a module in your language of choice. Don't use line-oriented tools likegrep
orawk
to try to parse JSON.
– chepner
Nov 14 '18 at 17:27
add a comment |
2
Do you havejq
installed?
– anubhava
Nov 14 '18 at 17:18
2
Your output seems to be agrep
or whatever on a JSON file. You might be interested in usingjq
on your full file. But for this, we should need to see how this thing looks like.
– kvantour
Nov 14 '18 at 17:27
1
Use some JSON parser, whether it bejq
or a module in your language of choice. Don't use line-oriented tools likegrep
orawk
to try to parse JSON.
– chepner
Nov 14 '18 at 17:27
2
2
Do you have
jq
installed?– anubhava
Nov 14 '18 at 17:18
Do you have
jq
installed?– anubhava
Nov 14 '18 at 17:18
2
2
Your output seems to be a
grep
or whatever on a JSON file. You might be interested in using jq
on your full file. But for this, we should need to see how this thing looks like.– kvantour
Nov 14 '18 at 17:27
Your output seems to be a
grep
or whatever on a JSON file. You might be interested in using jq
on your full file. But for this, we should need to see how this thing looks like.– kvantour
Nov 14 '18 at 17:27
1
1
Use some JSON parser, whether it be
jq
or a module in your language of choice. Don't use line-oriented tools like grep
or awk
to try to parse JSON.– chepner
Nov 14 '18 at 17:27
Use some JSON parser, whether it be
jq
or a module in your language of choice. Don't use line-oriented tools like grep
or awk
to try to parse JSON.– chepner
Nov 14 '18 at 17:27
add a comment |
1 Answer
1
active
oldest
votes
What went wrong is the place of the comma in the first grep
:
grep -Eo 'id.:.[^"]+","' inputfile
You need to do something extra for getting the desired substring.
grep -Eo 'id.:.[^"]+","' inputfile | cut -d: -f2 | grep -Eo '[^",]+'
I used cut
, that would be easy for your example input.
cut -d'"' -f4 < inputfile
You have alternatives, like using jq
, or
sed -r 's/{"id":"([^"]*).*/1/' inputfile
or using awk (solution now like cut
but can be changed easy)
awk -F'"' '{print $4}' inputfile
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305448%2fprint-all-the-instances-of-a-matching-pattern-in-a-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
What went wrong is the place of the comma in the first grep
:
grep -Eo 'id.:.[^"]+","' inputfile
You need to do something extra for getting the desired substring.
grep -Eo 'id.:.[^"]+","' inputfile | cut -d: -f2 | grep -Eo '[^",]+'
I used cut
, that would be easy for your example input.
cut -d'"' -f4 < inputfile
You have alternatives, like using jq
, or
sed -r 's/{"id":"([^"]*).*/1/' inputfile
or using awk (solution now like cut
but can be changed easy)
awk -F'"' '{print $4}' inputfile
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
add a comment |
What went wrong is the place of the comma in the first grep
:
grep -Eo 'id.:.[^"]+","' inputfile
You need to do something extra for getting the desired substring.
grep -Eo 'id.:.[^"]+","' inputfile | cut -d: -f2 | grep -Eo '[^",]+'
I used cut
, that would be easy for your example input.
cut -d'"' -f4 < inputfile
You have alternatives, like using jq
, or
sed -r 's/{"id":"([^"]*).*/1/' inputfile
or using awk (solution now like cut
but can be changed easy)
awk -F'"' '{print $4}' inputfile
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
add a comment |
What went wrong is the place of the comma in the first grep
:
grep -Eo 'id.:.[^"]+","' inputfile
You need to do something extra for getting the desired substring.
grep -Eo 'id.:.[^"]+","' inputfile | cut -d: -f2 | grep -Eo '[^",]+'
I used cut
, that would be easy for your example input.
cut -d'"' -f4 < inputfile
You have alternatives, like using jq
, or
sed -r 's/{"id":"([^"]*).*/1/' inputfile
or using awk (solution now like cut
but can be changed easy)
awk -F'"' '{print $4}' inputfile
What went wrong is the place of the comma in the first grep
:
grep -Eo 'id.:.[^"]+","' inputfile
You need to do something extra for getting the desired substring.
grep -Eo 'id.:.[^"]+","' inputfile | cut -d: -f2 | grep -Eo '[^",]+'
I used cut
, that would be easy for your example input.
cut -d'"' -f4 < inputfile
You have alternatives, like using jq
, or
sed -r 's/{"id":"([^"]*).*/1/' inputfile
or using awk (solution now like cut
but can be changed easy)
awk -F'"' '{print $4}' inputfile
answered Nov 14 '18 at 20:33
Walter AWalter A
10.8k21031
10.8k21031
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
add a comment |
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
Thank you very much, this has helped and I got the desired result.
– Venkat
Nov 15 '18 at 5:41
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
In that case you can accept it: stackoverflow.com/help/someone-answers
– Walter A
Nov 15 '18 at 8:57
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53305448%2fprint-all-the-instances-of-a-matching-pattern-in-a-file%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Do you have
jq
installed?– anubhava
Nov 14 '18 at 17:18
2
Your output seems to be a
grep
or whatever on a JSON file. You might be interested in usingjq
on your full file. But for this, we should need to see how this thing looks like.– kvantour
Nov 14 '18 at 17:27
1
Use some JSON parser, whether it be
jq
or a module in your language of choice. Don't use line-oriented tools likegrep
orawk
to try to parse JSON.– chepner
Nov 14 '18 at 17:27