How to use sed for substituting 2nd column in shell
I have file
that looks like this :
1,2,3,4
5,6,7,8
I want to substitute 2rd column containing 6 to 89. The desired output is
1,2,3,4
5,89,7,8
But if I type
index=2
cat file | sed 's/[^,]*/89/'$index
I get
1,89,3,4
5,89,7,8
and if I type
index=2
cat file | sed 's/[^,]6/89/'$index
nothing changes.
Why is it like this? How can I fix this? Thank you.
sed
add a comment |
I have file
that looks like this :
1,2,3,4
5,6,7,8
I want to substitute 2rd column containing 6 to 89. The desired output is
1,2,3,4
5,89,7,8
But if I type
index=2
cat file | sed 's/[^,]*/89/'$index
I get
1,89,3,4
5,89,7,8
and if I type
index=2
cat file | sed 's/[^,]6/89/'$index
nothing changes.
Why is it like this? How can I fix this? Thank you.
sed
1
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.
– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
1
Also, thecat
is useless.
– tripleee
Nov 13 '18 at 5:01
1
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02
add a comment |
I have file
that looks like this :
1,2,3,4
5,6,7,8
I want to substitute 2rd column containing 6 to 89. The desired output is
1,2,3,4
5,89,7,8
But if I type
index=2
cat file | sed 's/[^,]*/89/'$index
I get
1,89,3,4
5,89,7,8
and if I type
index=2
cat file | sed 's/[^,]6/89/'$index
nothing changes.
Why is it like this? How can I fix this? Thank you.
sed
I have file
that looks like this :
1,2,3,4
5,6,7,8
I want to substitute 2rd column containing 6 to 89. The desired output is
1,2,3,4
5,89,7,8
But if I type
index=2
cat file | sed 's/[^,]*/89/'$index
I get
1,89,3,4
5,89,7,8
and if I type
index=2
cat file | sed 's/[^,]6/89/'$index
nothing changes.
Why is it like this? How can I fix this? Thank you.
sed
sed
asked Nov 13 '18 at 4:55
Sumin KimSumin Kim
1028
1028
1
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.
– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
1
Also, thecat
is useless.
– tripleee
Nov 13 '18 at 5:01
1
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02
add a comment |
1
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.
– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
1
Also, thecat
is useless.
– tripleee
Nov 13 '18 at 5:01
1
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02
1
1
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.– tripleee
Nov 13 '18 at 4:59
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
1
1
Also, the
cat
is useless.– tripleee
Nov 13 '18 at 5:01
Also, the
cat
is useless.– tripleee
Nov 13 '18 at 5:01
1
1
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02
add a comment |
2 Answers
2
active
oldest
votes
Since you want to change the second column containing a 6
and you have a comma as field separator it is actually very easy with sed
:
sed 's/^([^,]*),6,/1,89,/`
Here we make use of back-referencing to remember the first column.
If you want to replace the 6
in the 5th column, you can do something like:
sed 's/^(([^,]*,)4)6,/189,/'
It is, however, much more comfortable using awk
:
awk 'BEGINFS=OFS=","($2==6)$2=891'
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
add a comment |
I solved this by using awk
awk 'BEGINFS=OFS="," if ($2==6) $2=891' file >file1
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%2f53274050%2fhow-to-use-sed-for-substituting-2nd-column-in-shell%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Since you want to change the second column containing a 6
and you have a comma as field separator it is actually very easy with sed
:
sed 's/^([^,]*),6,/1,89,/`
Here we make use of back-referencing to remember the first column.
If you want to replace the 6
in the 5th column, you can do something like:
sed 's/^(([^,]*,)4)6,/189,/'
It is, however, much more comfortable using awk
:
awk 'BEGINFS=OFS=","($2==6)$2=891'
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
add a comment |
Since you want to change the second column containing a 6
and you have a comma as field separator it is actually very easy with sed
:
sed 's/^([^,]*),6,/1,89,/`
Here we make use of back-referencing to remember the first column.
If you want to replace the 6
in the 5th column, you can do something like:
sed 's/^(([^,]*,)4)6,/189,/'
It is, however, much more comfortable using awk
:
awk 'BEGINFS=OFS=","($2==6)$2=891'
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
add a comment |
Since you want to change the second column containing a 6
and you have a comma as field separator it is actually very easy with sed
:
sed 's/^([^,]*),6,/1,89,/`
Here we make use of back-referencing to remember the first column.
If you want to replace the 6
in the 5th column, you can do something like:
sed 's/^(([^,]*,)4)6,/189,/'
It is, however, much more comfortable using awk
:
awk 'BEGINFS=OFS=","($2==6)$2=891'
Since you want to change the second column containing a 6
and you have a comma as field separator it is actually very easy with sed
:
sed 's/^([^,]*),6,/1,89,/`
Here we make use of back-referencing to remember the first column.
If you want to replace the 6
in the 5th column, you can do something like:
sed 's/^(([^,]*,)4)6,/189,/'
It is, however, much more comfortable using awk
:
awk 'BEGINFS=OFS=","($2==6)$2=891'
answered Nov 13 '18 at 11:37
kvantourkvantour
8,37131230
8,37131230
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
add a comment |
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
Thank you very much!
– Sumin Kim
Nov 14 '18 at 9:36
add a comment |
I solved this by using awk
awk 'BEGINFS=OFS="," if ($2==6) $2=891' file >file1
add a comment |
I solved this by using awk
awk 'BEGINFS=OFS="," if ($2==6) $2=891' file >file1
add a comment |
I solved this by using awk
awk 'BEGINFS=OFS="," if ($2==6) $2=891' file >file1
I solved this by using awk
awk 'BEGINFS=OFS="," if ($2==6) $2=891' file >file1
answered Nov 13 '18 at 6:03
Sumin KimSumin Kim
1028
1028
add a comment |
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%2f53274050%2fhow-to-use-sed-for-substituting-2nd-column-in-shell%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
1
[^,]
matches a single character which is not comma (or newline). It is unclear what you imagine it should match.– tripleee
Nov 13 '18 at 4:59
Possible duplicate of How to replace second column of csv file with a specific value "XYX"
– tripleee
Nov 13 '18 at 4:59
1
Also, the
cat
is useless.– tripleee
Nov 13 '18 at 5:01
1
Possible duplicate of stackoverflow.com/questions/49833671/…
– tripleee
Nov 13 '18 at 5:05
Yes I did not know what [^,] means. Thank you! I don't need to substitute all lines
– Sumin Kim
Nov 13 '18 at 6:02