Question about text formatting using sed of awk 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” questionUsing sed/awk to remove anything after first spacesed remove last space only on end of line,combined with awkUsing sed / awk to change words between two patternssed append a text with many lines after matching of multiple strings while the text remains many lines in sed commandRegex: using awk and sed to match websites by IPSelecting text from a file removing unwanted text using shellAWK/SED Remove a specific latex command from the text AND closing bracket behind itAwk to remove extra space after first letter?How to remove n from a column using awk or sedDeleting portion of a text file and following lines using sed
What would be Julian Assange's expected punishment, on the current English criminal law?
Fishing simulator
How can I protect witches in combat who wear limited clothing?
Do working physicists consider Newtonian mechanics to be "falsified"?
Single author papers against my advisor's will?
Is it possible to boil a liquid by just mixing many immiscible liquids together?
Typsetting diagram chases (with TikZ?)
Did the new image of black hole confirm the general theory of relativity?
Determine whether f is a function, an injection, a surjection
How to say that you spent the night with someone, you were only sleeping and nothing else?
3 doors, three guards, one stone
How do you clear the ApexPages.getMessages() collection in a test?
What did Darwin mean by 'squib' here?
What can I do if my MacBook isn’t charging but already ran out?
Can I add database to AWS RDS MySQL without creating new instance?
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
Statistical model of ligand substitution
What do you call the holes in a flute?
Can a zero nonce be safely used with AES-GCM if the key is random and never used again?
Strange behaviour of Check
Is there a documented rationale why the House Ways and Means chairman can demand tax info?
What computer would be fastest for Mathematica Home Edition?
Blender game recording at the wrong time
Need a suitable toxic chemical for a murder plot in my novel
Question about text formatting using sed of awk
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” questionUsing sed/awk to remove anything after first spacesed remove last space only on end of line,combined with awkUsing sed / awk to change words between two patternssed append a text with many lines after matching of multiple strings while the text remains many lines in sed commandRegex: using awk and sed to match websites by IPSelecting text from a file removing unwanted text using shellAWK/SED Remove a specific latex command from the text AND closing bracket behind itAwk to remove extra space after first letter?How to remove n from a column using awk or sedDeleting portion of a text file and following lines using sed
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I want to format text using awk
or sed
.
I have text looking like,
H1 (dxfault)
H337 (Unxr)
H1106 (hast)
H1129 (h1129)
H1370 (hlan1370)
I want to remove the letter H
and everything after the first space, and format numbers look like 1,337,1106,1129,1370
I found two different sed
options
First:
sed 'y/H/ /' #for removing H letter in front
Second:
sed 's/s.*$//' #for removing everything after first break "space"
How can I combine these commands and add a comma after the numbers?
linux text-processing awk sed text-formatting
New contributor
add a comment |
I want to format text using awk
or sed
.
I have text looking like,
H1 (dxfault)
H337 (Unxr)
H1106 (hast)
H1129 (h1129)
H1370 (hlan1370)
I want to remove the letter H
and everything after the first space, and format numbers look like 1,337,1106,1129,1370
I found two different sed
options
First:
sed 'y/H/ /' #for removing H letter in front
Second:
sed 's/s.*$//' #for removing everything after first break "space"
How can I combine these commands and add a comma after the numbers?
linux text-processing awk sed text-formatting
New contributor
add a comment |
I want to format text using awk
or sed
.
I have text looking like,
H1 (dxfault)
H337 (Unxr)
H1106 (hast)
H1129 (h1129)
H1370 (hlan1370)
I want to remove the letter H
and everything after the first space, and format numbers look like 1,337,1106,1129,1370
I found two different sed
options
First:
sed 'y/H/ /' #for removing H letter in front
Second:
sed 's/s.*$//' #for removing everything after first break "space"
How can I combine these commands and add a comma after the numbers?
linux text-processing awk sed text-formatting
New contributor
I want to format text using awk
or sed
.
I have text looking like,
H1 (dxfault)
H337 (Unxr)
H1106 (hast)
H1129 (h1129)
H1370 (hlan1370)
I want to remove the letter H
and everything after the first space, and format numbers look like 1,337,1106,1129,1370
I found two different sed
options
First:
sed 'y/H/ /' #for removing H letter in front
Second:
sed 's/s.*$//' #for removing everything after first break "space"
How can I combine these commands and add a comma after the numbers?
linux text-processing awk sed text-formatting
linux text-processing awk sed text-formatting
New contributor
New contributor
edited 17 hours ago
Jeff Schaller♦
45k1164147
45k1164147
New contributor
asked Apr 11 at 7:32
GiunterGiunter
62
62
New contributor
New contributor
add a comment |
add a comment |
5 Answers
5
active
oldest
votes
You can use sed
to get the numbers only and paste
to merge the lines with ,
as delimiter:
sed -E 's/^H([0-9]*).*$/1/' file | paste -sd,
or grep
and paste
:
grep -Po '^HK[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file | cut -c 2- | paste -sd,
You can exchange the linebreak with ,
with sed
, but imo paste
is easier.
hi.. can you tell me why can't we useor
(|
) operatorsed -E 's/^H|s.*$/1/'
also what does1
and()
mean?
– Goron
Apr 11 at 8:04
You can't use|
, because you want to match^H
at the beginning ands.*$
at the end of the line which are two matches (not one or the other).()
is used to group the matches and1
is a backreference to the first group in the replacement. See for examplesed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.
– Freddy
Apr 11 at 8:49
add a comment |
Or sed
/grep
using tr
:
$ sed -E 's/H([0-9]+).*/1/' file | tr 'n' ,
$ grep -o '[0-9]+s' file | tr -s 'n ' ,
tr 'n' ,
replaces newline with commatr -s 'n ' ,
replaces newline and space with one comma
add a comment |
I have done by below method
sed -e "s/H//g" -e "s/s.*//g" filename | perl -pne "s/n/,/g"| sed "s/,$//g"
output
1,337,1106,1129,1370
add a comment |
Tried with Python too
import subprocess
import re
k=re.compile(r's.*')
u=[]
f=[]
l=open('l.txt','r')
for i in l:
u.append(re.sub("H","",i).strip())
for m in u:
f.append(re.sub(k,"",m))
print ",".join(f)
output
1,337,1106,1129,1370
add a comment |
Using sed
, assuming that any characters may be used but there is only 1 space ....
sed -E "s/^H(.+) .*$/1/g" filename | paste -sd,
I would rather opt for grep
though which allows for any characters and extracts the match until the first space found
grep -Po "(?<=^H)[^ ]*" filename | paste -sd,
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
);
);
Giunter is a new contributor. Be nice, and check out our Code of Conduct.
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%2f511829%2fquestion-about-text-formatting-using-sed-of-awk%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use sed
to get the numbers only and paste
to merge the lines with ,
as delimiter:
sed -E 's/^H([0-9]*).*$/1/' file | paste -sd,
or grep
and paste
:
grep -Po '^HK[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file | cut -c 2- | paste -sd,
You can exchange the linebreak with ,
with sed
, but imo paste
is easier.
hi.. can you tell me why can't we useor
(|
) operatorsed -E 's/^H|s.*$/1/'
also what does1
and()
mean?
– Goron
Apr 11 at 8:04
You can't use|
, because you want to match^H
at the beginning ands.*$
at the end of the line which are two matches (not one or the other).()
is used to group the matches and1
is a backreference to the first group in the replacement. See for examplesed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.
– Freddy
Apr 11 at 8:49
add a comment |
You can use sed
to get the numbers only and paste
to merge the lines with ,
as delimiter:
sed -E 's/^H([0-9]*).*$/1/' file | paste -sd,
or grep
and paste
:
grep -Po '^HK[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file | cut -c 2- | paste -sd,
You can exchange the linebreak with ,
with sed
, but imo paste
is easier.
hi.. can you tell me why can't we useor
(|
) operatorsed -E 's/^H|s.*$/1/'
also what does1
and()
mean?
– Goron
Apr 11 at 8:04
You can't use|
, because you want to match^H
at the beginning ands.*$
at the end of the line which are two matches (not one or the other).()
is used to group the matches and1
is a backreference to the first group in the replacement. See for examplesed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.
– Freddy
Apr 11 at 8:49
add a comment |
You can use sed
to get the numbers only and paste
to merge the lines with ,
as delimiter:
sed -E 's/^H([0-9]*).*$/1/' file | paste -sd,
or grep
and paste
:
grep -Po '^HK[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file | cut -c 2- | paste -sd,
You can exchange the linebreak with ,
with sed
, but imo paste
is easier.
You can use sed
to get the numbers only and paste
to merge the lines with ,
as delimiter:
sed -E 's/^H([0-9]*).*$/1/' file | paste -sd,
or grep
and paste
:
grep -Po '^HK[0-9]*' file | paste -sd,
grep -o '^H[0-9]*' file | cut -c 2- | paste -sd,
You can exchange the linebreak with ,
with sed
, but imo paste
is easier.
answered Apr 11 at 7:52
RoVoRoVo
3,761317
3,761317
hi.. can you tell me why can't we useor
(|
) operatorsed -E 's/^H|s.*$/1/'
also what does1
and()
mean?
– Goron
Apr 11 at 8:04
You can't use|
, because you want to match^H
at the beginning ands.*$
at the end of the line which are two matches (not one or the other).()
is used to group the matches and1
is a backreference to the first group in the replacement. See for examplesed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.
– Freddy
Apr 11 at 8:49
add a comment |
hi.. can you tell me why can't we useor
(|
) operatorsed -E 's/^H|s.*$/1/'
also what does1
and()
mean?
– Goron
Apr 11 at 8:04
You can't use|
, because you want to match^H
at the beginning ands.*$
at the end of the line which are two matches (not one or the other).()
is used to group the matches and1
is a backreference to the first group in the replacement. See for examplesed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.
– Freddy
Apr 11 at 8:49
hi.. can you tell me why can't we use
or
(|
) operator sed -E 's/^H|s.*$/1/'
also what does 1
and ()
mean?– Goron
Apr 11 at 8:04
hi.. can you tell me why can't we use
or
(|
) operator sed -E 's/^H|s.*$/1/'
also what does 1
and ()
mean?– Goron
Apr 11 at 8:04
You can't use
|
, because you want to match ^H
at the beginning and s.*$
at the end of the line which are two matches (not one or the other). ()
is used to group the matches and 1
is a backreference to the first group in the replacement. See for example sed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.– Freddy
Apr 11 at 8:49
You can't use
|
, because you want to match ^H
at the beginning and s.*$
at the end of the line which are two matches (not one or the other). ()
is used to group the matches and 1
is a backreference to the first group in the replacement. See for example sed -E 's/(^H)(.*)(s.*$)/1:1 2:2 3:3/' file
which uses 3 groups and backreferences.– Freddy
Apr 11 at 8:49
add a comment |
Or sed
/grep
using tr
:
$ sed -E 's/H([0-9]+).*/1/' file | tr 'n' ,
$ grep -o '[0-9]+s' file | tr -s 'n ' ,
tr 'n' ,
replaces newline with commatr -s 'n ' ,
replaces newline and space with one comma
add a comment |
Or sed
/grep
using tr
:
$ sed -E 's/H([0-9]+).*/1/' file | tr 'n' ,
$ grep -o '[0-9]+s' file | tr -s 'n ' ,
tr 'n' ,
replaces newline with commatr -s 'n ' ,
replaces newline and space with one comma
add a comment |
Or sed
/grep
using tr
:
$ sed -E 's/H([0-9]+).*/1/' file | tr 'n' ,
$ grep -o '[0-9]+s' file | tr -s 'n ' ,
tr 'n' ,
replaces newline with commatr -s 'n ' ,
replaces newline and space with one comma
Or sed
/grep
using tr
:
$ sed -E 's/H([0-9]+).*/1/' file | tr 'n' ,
$ grep -o '[0-9]+s' file | tr -s 'n ' ,
tr 'n' ,
replaces newline with commatr -s 'n ' ,
replaces newline and space with one comma
answered Apr 11 at 8:32
FreddyFreddy
1,859210
1,859210
add a comment |
add a comment |
I have done by below method
sed -e "s/H//g" -e "s/s.*//g" filename | perl -pne "s/n/,/g"| sed "s/,$//g"
output
1,337,1106,1129,1370
add a comment |
I have done by below method
sed -e "s/H//g" -e "s/s.*//g" filename | perl -pne "s/n/,/g"| sed "s/,$//g"
output
1,337,1106,1129,1370
add a comment |
I have done by below method
sed -e "s/H//g" -e "s/s.*//g" filename | perl -pne "s/n/,/g"| sed "s/,$//g"
output
1,337,1106,1129,1370
I have done by below method
sed -e "s/H//g" -e "s/s.*//g" filename | perl -pne "s/n/,/g"| sed "s/,$//g"
output
1,337,1106,1129,1370
answered yesterday
Praveen Kumar BSPraveen Kumar BS
1,7751311
1,7751311
add a comment |
add a comment |
Tried with Python too
import subprocess
import re
k=re.compile(r's.*')
u=[]
f=[]
l=open('l.txt','r')
for i in l:
u.append(re.sub("H","",i).strip())
for m in u:
f.append(re.sub(k,"",m))
print ",".join(f)
output
1,337,1106,1129,1370
add a comment |
Tried with Python too
import subprocess
import re
k=re.compile(r's.*')
u=[]
f=[]
l=open('l.txt','r')
for i in l:
u.append(re.sub("H","",i).strip())
for m in u:
f.append(re.sub(k,"",m))
print ",".join(f)
output
1,337,1106,1129,1370
add a comment |
Tried with Python too
import subprocess
import re
k=re.compile(r's.*')
u=[]
f=[]
l=open('l.txt','r')
for i in l:
u.append(re.sub("H","",i).strip())
for m in u:
f.append(re.sub(k,"",m))
print ",".join(f)
output
1,337,1106,1129,1370
Tried with Python too
import subprocess
import re
k=re.compile(r's.*')
u=[]
f=[]
l=open('l.txt','r')
for i in l:
u.append(re.sub("H","",i).strip())
for m in u:
f.append(re.sub(k,"",m))
print ",".join(f)
output
1,337,1106,1129,1370
answered yesterday
Praveen Kumar BSPraveen Kumar BS
1,7751311
1,7751311
add a comment |
add a comment |
Using sed
, assuming that any characters may be used but there is only 1 space ....
sed -E "s/^H(.+) .*$/1/g" filename | paste -sd,
I would rather opt for grep
though which allows for any characters and extracts the match until the first space found
grep -Po "(?<=^H)[^ ]*" filename | paste -sd,
add a comment |
Using sed
, assuming that any characters may be used but there is only 1 space ....
sed -E "s/^H(.+) .*$/1/g" filename | paste -sd,
I would rather opt for grep
though which allows for any characters and extracts the match until the first space found
grep -Po "(?<=^H)[^ ]*" filename | paste -sd,
add a comment |
Using sed
, assuming that any characters may be used but there is only 1 space ....
sed -E "s/^H(.+) .*$/1/g" filename | paste -sd,
I would rather opt for grep
though which allows for any characters and extracts the match until the first space found
grep -Po "(?<=^H)[^ ]*" filename | paste -sd,
Using sed
, assuming that any characters may be used but there is only 1 space ....
sed -E "s/^H(.+) .*$/1/g" filename | paste -sd,
I would rather opt for grep
though which allows for any characters and extracts the match until the first space found
grep -Po "(?<=^H)[^ ]*" filename | paste -sd,
answered yesterday
bu5hmanbu5hman
1,356415
1,356415
add a comment |
add a comment |
Giunter is a new contributor. Be nice, and check out our Code of Conduct.
Giunter is a new contributor. Be nice, and check out our Code of Conduct.
Giunter is a new contributor. Be nice, and check out our Code of Conduct.
Giunter is a new contributor. Be nice, and check out our Code of Conduct.
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%2f511829%2fquestion-about-text-formatting-using-sed-of-awk%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
-awk, linux, sed, text-formatting, text-processing