Grep end regex matching Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election Results Why I closed the “Why is Kali so hard” questionSed regex - include original matchingRegex/pattern matching problem to extract dataRegex not matchingWhat is the email matching regex in basic regex for grep?Problems with regex in greppiping grep regex into sed commandgrep regular expression to avoid matching semicolon at endGrep word matchingsed or grep regex problemGrep regex not working
Unable to start mainnet node docker container
What's the difference between (size_t)-1 and ~0?
What are the performance impacts of 'functional' Rust?
Are my PIs rude or am I just being too sensitive?
How do you clear the ApexPages.getMessages() collection in a test?
Active filter with series inductor and resistor - do these exist?
What do you call a plan that's an alternative plan in case your initial plan fails?
Can the prologue be the backstory of your main character?
How does modal jazz use chord progressions?
Blender game recording at the wrong time
Why use gamma over alpha radiation?
What would be Julian Assange's expected punishment, on the current English criminal law?
How to market an anarchic city as a tourism spot to people living in civilized areas?
New Order #5: where Fibonacci and Beatty meet at Wythoff
How to say that you spent the night with someone, you were only sleeping and nothing else?
What was the last x86 CPU that did not have the x87 floating-point unit built in?
What to do with post with dry rot?
Replacing HDD with SSD; what about non-APFS/APFS?
What's the point in a preamp?
Estimated State payment too big --> money back; + 2018 Tax Reform
Cold is to Refrigerator as warm is to?
Autumning in love
Unexpected result with right shift after bitwise negation
What did Darwin mean by 'squib' here?
Grep end regex matching
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Community Moderator Election Results
Why I closed the “Why is Kali so hard” questionSed regex - include original matchingRegex/pattern matching problem to extract dataRegex not matchingWhat is the email matching regex in basic regex for grep?Problems with regex in greppiping grep regex into sed commandgrep regular expression to avoid matching semicolon at endGrep word matchingsed or grep regex problemGrep regex not working
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
On OS X, system_profiler SPHardwareDataType
outputs:
Hardware Overview:
Model Name: MacBook Pro
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory: 8 GB
I want to get the Memory
value, trimmed of whitespaces.
This is what I had:
system_profiler SPHardwareDataType | grep --color=never -E '^ +Memory: ' | cut -d ':' -f 2
Not ok. It keeps the whitespace.
I switched to this:
system_profiler SPHardwareDataType | perl -ne 'if(/^ +Memory: (.*)$/)print $1;'
and I'd like to ask:
- Could this be made more concise in Perl?
The braces annoy me, often I type them wrong. Having to put the condition in ()
is also bothersome. The semicolon is bothersome.
- Could this be made as concisely using more basic UNIX tools? (grep/sed/awk)?
Note: I do not use this line I like..
system_profiler SPHardwareDataType | sed -Ene 's/^ +Memory: (.*)$/1/g p'
because extended regexes (-E
are -r
on some platforms? possible?) and fundamentally because, although I understand that sed
works on lines, -n
suppresses output unless I explicitly p
print it, s//g
is a normal regex substitute
.. and that commands following a match
are only executed on matching lines.. I am puzzled by the fact that s//g
in reality is an action in itself.. so I would expect p
to require a ;
before it.. odd that you can both replace and use the match as a condition to execute the comand.. is that line correct at all?
sed grep perl
add a comment |
On OS X, system_profiler SPHardwareDataType
outputs:
Hardware Overview:
Model Name: MacBook Pro
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory: 8 GB
I want to get the Memory
value, trimmed of whitespaces.
This is what I had:
system_profiler SPHardwareDataType | grep --color=never -E '^ +Memory: ' | cut -d ':' -f 2
Not ok. It keeps the whitespace.
I switched to this:
system_profiler SPHardwareDataType | perl -ne 'if(/^ +Memory: (.*)$/)print $1;'
and I'd like to ask:
- Could this be made more concise in Perl?
The braces annoy me, often I type them wrong. Having to put the condition in ()
is also bothersome. The semicolon is bothersome.
- Could this be made as concisely using more basic UNIX tools? (grep/sed/awk)?
Note: I do not use this line I like..
system_profiler SPHardwareDataType | sed -Ene 's/^ +Memory: (.*)$/1/g p'
because extended regexes (-E
are -r
on some platforms? possible?) and fundamentally because, although I understand that sed
works on lines, -n
suppresses output unless I explicitly p
print it, s//g
is a normal regex substitute
.. and that commands following a match
are only executed on matching lines.. I am puzzled by the fact that s//g
in reality is an action in itself.. so I would expect p
to require a ;
before it.. odd that you can both replace and use the match as a condition to execute the comand.. is that line correct at all?
sed grep perl
add a comment |
On OS X, system_profiler SPHardwareDataType
outputs:
Hardware Overview:
Model Name: MacBook Pro
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory: 8 GB
I want to get the Memory
value, trimmed of whitespaces.
This is what I had:
system_profiler SPHardwareDataType | grep --color=never -E '^ +Memory: ' | cut -d ':' -f 2
Not ok. It keeps the whitespace.
I switched to this:
system_profiler SPHardwareDataType | perl -ne 'if(/^ +Memory: (.*)$/)print $1;'
and I'd like to ask:
- Could this be made more concise in Perl?
The braces annoy me, often I type them wrong. Having to put the condition in ()
is also bothersome. The semicolon is bothersome.
- Could this be made as concisely using more basic UNIX tools? (grep/sed/awk)?
Note: I do not use this line I like..
system_profiler SPHardwareDataType | sed -Ene 's/^ +Memory: (.*)$/1/g p'
because extended regexes (-E
are -r
on some platforms? possible?) and fundamentally because, although I understand that sed
works on lines, -n
suppresses output unless I explicitly p
print it, s//g
is a normal regex substitute
.. and that commands following a match
are only executed on matching lines.. I am puzzled by the fact that s//g
in reality is an action in itself.. so I would expect p
to require a ;
before it.. odd that you can both replace and use the match as a condition to execute the comand.. is that line correct at all?
sed grep perl
On OS X, system_profiler SPHardwareDataType
outputs:
Hardware Overview:
Model Name: MacBook Pro
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory: 8 GB
I want to get the Memory
value, trimmed of whitespaces.
This is what I had:
system_profiler SPHardwareDataType | grep --color=never -E '^ +Memory: ' | cut -d ':' -f 2
Not ok. It keeps the whitespace.
I switched to this:
system_profiler SPHardwareDataType | perl -ne 'if(/^ +Memory: (.*)$/)print $1;'
and I'd like to ask:
- Could this be made more concise in Perl?
The braces annoy me, often I type them wrong. Having to put the condition in ()
is also bothersome. The semicolon is bothersome.
- Could this be made as concisely using more basic UNIX tools? (grep/sed/awk)?
Note: I do not use this line I like..
system_profiler SPHardwareDataType | sed -Ene 's/^ +Memory: (.*)$/1/g p'
because extended regexes (-E
are -r
on some platforms? possible?) and fundamentally because, although I understand that sed
works on lines, -n
suppresses output unless I explicitly p
print it, s//g
is a normal regex substitute
.. and that commands following a match
are only executed on matching lines.. I am puzzled by the fact that s//g
in reality is an action in itself.. so I would expect p
to require a ;
before it.. odd that you can both replace and use the match as a condition to execute the comand.. is that line correct at all?
sed grep perl
sed grep perl
edited 17 hours ago
Rui F Ribeiro
42.1k1483142
42.1k1483142
asked Mar 29 '13 at 19:34
RobottinosinoRobottinosino
1,87382745
1,87382745
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Awk would make it most consise:
system_profiler SPHardwareDataType | awk -F': ' '/Memory:/print $2'
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
add a comment |
This is all you really need for the Perl one:
system_profiler SPHardwareDataType | perl -nle '/ry:s*(.*)/ && print $1'
Some other choices:
system_profiler SPHardwareDataType | /bin/grep Me | gawk 'print $2,$3'
Using /bin/grep eliminates the need for
--color=never
.grep
is defined as an alias togrep --color=auto
in/etc/bash.bashrc
(at least it is on most Linux distros and, I guess, on OSX).system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'
The
-o
causes grep toprint only the matched characters.system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5
system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'
add a comment |
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'
p
here is a flag to the s
command (like g
), not the p
command, and means print the pattern space if the substitution takes place. You don't need g
here, since the pattern can only match once.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
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: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
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%2funix.stackexchange.com%2fquestions%2f70541%2fgrep-end-regex-matching%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Awk would make it most consise:
system_profiler SPHardwareDataType | awk -F': ' '/Memory:/print $2'
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
add a comment |
Awk would make it most consise:
system_profiler SPHardwareDataType | awk -F': ' '/Memory:/print $2'
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
add a comment |
Awk would make it most consise:
system_profiler SPHardwareDataType | awk -F': ' '/Memory:/print $2'
Awk would make it most consise:
system_profiler SPHardwareDataType | awk -F': ' '/Memory:/print $2'
edited Mar 29 '13 at 19:46
answered Mar 29 '13 at 19:36
Dennis KaarsemakerDennis Kaarsemaker
6,99812326
6,99812326
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
add a comment |
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Does not capture the unit of measure, in that case GB, which was desirable.. perhaps a capture "from field 2 to NF"? How would you write that?
– Robottinosino
Mar 29 '13 at 19:38
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
Not sure, so I simply edited the answer to use a proper -F parameter :)
– Dennis Kaarsemaker
Mar 29 '13 at 19:46
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
This is the best I have found anywhere. The -F to include both the colon and the space trims the rest of the line already, in one go. Very compact, exactly right.. LIKE!
– Robottinosino
Mar 29 '13 at 20:11
add a comment |
This is all you really need for the Perl one:
system_profiler SPHardwareDataType | perl -nle '/ry:s*(.*)/ && print $1'
Some other choices:
system_profiler SPHardwareDataType | /bin/grep Me | gawk 'print $2,$3'
Using /bin/grep eliminates the need for
--color=never
.grep
is defined as an alias togrep --color=auto
in/etc/bash.bashrc
(at least it is on most Linux distros and, I guess, on OSX).system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'
The
-o
causes grep toprint only the matched characters.system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5
system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'
add a comment |
This is all you really need for the Perl one:
system_profiler SPHardwareDataType | perl -nle '/ry:s*(.*)/ && print $1'
Some other choices:
system_profiler SPHardwareDataType | /bin/grep Me | gawk 'print $2,$3'
Using /bin/grep eliminates the need for
--color=never
.grep
is defined as an alias togrep --color=auto
in/etc/bash.bashrc
(at least it is on most Linux distros and, I guess, on OSX).system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'
The
-o
causes grep toprint only the matched characters.system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5
system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'
add a comment |
This is all you really need for the Perl one:
system_profiler SPHardwareDataType | perl -nle '/ry:s*(.*)/ && print $1'
Some other choices:
system_profiler SPHardwareDataType | /bin/grep Me | gawk 'print $2,$3'
Using /bin/grep eliminates the need for
--color=never
.grep
is defined as an alias togrep --color=auto
in/etc/bash.bashrc
(at least it is on most Linux distros and, I guess, on OSX).system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'
The
-o
causes grep toprint only the matched characters.system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5
system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'
This is all you really need for the Perl one:
system_profiler SPHardwareDataType | perl -nle '/ry:s*(.*)/ && print $1'
Some other choices:
system_profiler SPHardwareDataType | /bin/grep Me | gawk 'print $2,$3'
Using /bin/grep eliminates the need for
--color=never
.grep
is defined as an alias togrep --color=auto
in/etc/bash.bashrc
(at least it is on most Linux distros and, I guess, on OSX).system_profiler SPHardwareDataType | /bin/grep Me | /bin/egrep -o '[1-9]+.+'
The
-o
causes grep toprint only the matched characters.system_profiler SPHardwareDataType | tail -n 1 | cut -d ' ' -f 4,5
system_profiler SPHardwareDataType | tail -n 1 | sed 's/.*: //g'
edited Mar 29 '13 at 20:04
answered Mar 29 '13 at 19:51
terdon♦terdon
134k33270450
134k33270450
add a comment |
add a comment |
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'
p
here is a flag to the s
command (like g
), not the p
command, and means print the pattern space if the substitution takes place. You don't need g
here, since the pattern can only match once.
add a comment |
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'
p
here is a flag to the s
command (like g
), not the p
command, and means print the pattern space if the substitution takes place. You don't need g
here, since the pattern can only match once.
add a comment |
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'
p
here is a flag to the s
command (like g
), not the p
command, and means print the pattern space if the substitution takes place. You don't need g
here, since the pattern can only match once.
system_profiler SPHardwareDataType | sed -n 's/^ *Memory: //p'
p
here is a flag to the s
command (like g
), not the p
command, and means print the pattern space if the substitution takes place. You don't need g
here, since the pattern can only match once.
answered Mar 29 '13 at 22:34
Stéphane ChazelasStéphane Chazelas
314k57594953
314k57594953
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- 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%2funix.stackexchange.com%2fquestions%2f70541%2fgrep-end-regex-matching%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
-grep, perl, sed