Apply a vim command on several files with sed command [duplicate]












1















This question already has an answer here:




  • Remove carriage return in Unix

    16 answers



  • Are shell scripts sensitive to encoding and line endings?

    2 answers




I have files with the ^M character in the vim editor. To delete that character I'm using :%s/r/r/g based on this post: https://stackoverflow.com/a/12614243/9759150 (Question: How to convert the ^M linebreak to 'normal' linebreak in a file opened in vim?), and it works!



But doing this file by file is a tedious task, so I would like to do with a command, and I thought in the sed command.



I have tried the following:



sed -i '%s/r/r/g' *


But I got sed: -e expression #1, char 1: unknown command:%'`



Then, I have tried this:
sed -i 's/r/r/g' * and I got no errors but when I open the files with vim I see the ^M characters.



Edit with an example:



The related post for a "possible duplicate question" (Remove carriage return in Unix) removes the r but I need to keep it. The only thing I need to change is the ^M character for a rone.



The original file is:
enter image description here



When I open vim and use :%s/r/r/g, the result is the desired:
enter image description here



But with the sed -i 's/r/r/g' * command, has not effect and the result is like the first image.
And using sed -i 's/r//g' * (from https://stackoverflow.com/a/41461947/9759150) the result is:
enter image description here
It can be seen that it does remove the ^M characters but I cannot get the same result as in vim.










share|improve this question















marked as duplicate by Benjamin W., Cyrus bash
Users with the  bash badge can single-handedly close bash questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 23 '18 at 19:32


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.















  • % is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
    – Benjamin W.
    Nov 23 '18 at 19:09












  • sed -i 's/r//g' *
    – Cyrus
    Nov 23 '18 at 19:31






  • 2




    Try sed -i 's/r/n/g' *.
    – Cyrus
    Nov 24 '18 at 9:08
















1















This question already has an answer here:




  • Remove carriage return in Unix

    16 answers



  • Are shell scripts sensitive to encoding and line endings?

    2 answers




I have files with the ^M character in the vim editor. To delete that character I'm using :%s/r/r/g based on this post: https://stackoverflow.com/a/12614243/9759150 (Question: How to convert the ^M linebreak to 'normal' linebreak in a file opened in vim?), and it works!



But doing this file by file is a tedious task, so I would like to do with a command, and I thought in the sed command.



I have tried the following:



sed -i '%s/r/r/g' *


But I got sed: -e expression #1, char 1: unknown command:%'`



Then, I have tried this:
sed -i 's/r/r/g' * and I got no errors but when I open the files with vim I see the ^M characters.



Edit with an example:



The related post for a "possible duplicate question" (Remove carriage return in Unix) removes the r but I need to keep it. The only thing I need to change is the ^M character for a rone.



The original file is:
enter image description here



When I open vim and use :%s/r/r/g, the result is the desired:
enter image description here



But with the sed -i 's/r/r/g' * command, has not effect and the result is like the first image.
And using sed -i 's/r//g' * (from https://stackoverflow.com/a/41461947/9759150) the result is:
enter image description here
It can be seen that it does remove the ^M characters but I cannot get the same result as in vim.










share|improve this question















marked as duplicate by Benjamin W., Cyrus bash
Users with the  bash badge can single-handedly close bash questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 23 '18 at 19:32


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.















  • % is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
    – Benjamin W.
    Nov 23 '18 at 19:09












  • sed -i 's/r//g' *
    – Cyrus
    Nov 23 '18 at 19:31






  • 2




    Try sed -i 's/r/n/g' *.
    – Cyrus
    Nov 24 '18 at 9:08














1












1








1


1






This question already has an answer here:




  • Remove carriage return in Unix

    16 answers



  • Are shell scripts sensitive to encoding and line endings?

    2 answers




I have files with the ^M character in the vim editor. To delete that character I'm using :%s/r/r/g based on this post: https://stackoverflow.com/a/12614243/9759150 (Question: How to convert the ^M linebreak to 'normal' linebreak in a file opened in vim?), and it works!



But doing this file by file is a tedious task, so I would like to do with a command, and I thought in the sed command.



I have tried the following:



sed -i '%s/r/r/g' *


But I got sed: -e expression #1, char 1: unknown command:%'`



Then, I have tried this:
sed -i 's/r/r/g' * and I got no errors but when I open the files with vim I see the ^M characters.



Edit with an example:



The related post for a "possible duplicate question" (Remove carriage return in Unix) removes the r but I need to keep it. The only thing I need to change is the ^M character for a rone.



The original file is:
enter image description here



When I open vim and use :%s/r/r/g, the result is the desired:
enter image description here



But with the sed -i 's/r/r/g' * command, has not effect and the result is like the first image.
And using sed -i 's/r//g' * (from https://stackoverflow.com/a/41461947/9759150) the result is:
enter image description here
It can be seen that it does remove the ^M characters but I cannot get the same result as in vim.










share|improve this question
















This question already has an answer here:




  • Remove carriage return in Unix

    16 answers



  • Are shell scripts sensitive to encoding and line endings?

    2 answers




I have files with the ^M character in the vim editor. To delete that character I'm using :%s/r/r/g based on this post: https://stackoverflow.com/a/12614243/9759150 (Question: How to convert the ^M linebreak to 'normal' linebreak in a file opened in vim?), and it works!



But doing this file by file is a tedious task, so I would like to do with a command, and I thought in the sed command.



I have tried the following:



sed -i '%s/r/r/g' *


But I got sed: -e expression #1, char 1: unknown command:%'`



Then, I have tried this:
sed -i 's/r/r/g' * and I got no errors but when I open the files with vim I see the ^M characters.



Edit with an example:



The related post for a "possible duplicate question" (Remove carriage return in Unix) removes the r but I need to keep it. The only thing I need to change is the ^M character for a rone.



The original file is:
enter image description here



When I open vim and use :%s/r/r/g, the result is the desired:
enter image description here



But with the sed -i 's/r/r/g' * command, has not effect and the result is like the first image.
And using sed -i 's/r//g' * (from https://stackoverflow.com/a/41461947/9759150) the result is:
enter image description here
It can be seen that it does remove the ^M characters but I cannot get the same result as in vim.





This question already has an answer here:




  • Remove carriage return in Unix

    16 answers



  • Are shell scripts sensitive to encoding and line endings?

    2 answers








bash vim sed






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 19:39







diens

















asked Nov 23 '18 at 19:05









diensdiens

32413




32413




marked as duplicate by Benjamin W., Cyrus bash
Users with the  bash badge can single-handedly close bash questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 23 '18 at 19:32


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.






marked as duplicate by Benjamin W., Cyrus bash
Users with the  bash badge can single-handedly close bash questions as duplicates and reopen them as needed.

StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;

$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');

$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 23 '18 at 19:32


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • % is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
    – Benjamin W.
    Nov 23 '18 at 19:09












  • sed -i 's/r//g' *
    – Cyrus
    Nov 23 '18 at 19:31






  • 2




    Try sed -i 's/r/n/g' *.
    – Cyrus
    Nov 24 '18 at 9:08


















  • % is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
    – Benjamin W.
    Nov 23 '18 at 19:09












  • sed -i 's/r//g' *
    – Cyrus
    Nov 23 '18 at 19:31






  • 2




    Try sed -i 's/r/n/g' *.
    – Cyrus
    Nov 24 '18 at 9:08
















% is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
– Benjamin W.
Nov 23 '18 at 19:09






% is vim (more precisely, ed/ex) specific: "all lines". Sed defaults to operating on all lines, so you don't need % there. For everything else, see the linked duplicate.
– Benjamin W.
Nov 23 '18 at 19:09














sed -i 's/r//g' *
– Cyrus
Nov 23 '18 at 19:31




sed -i 's/r//g' *
– Cyrus
Nov 23 '18 at 19:31




2




2




Try sed -i 's/r/n/g' *.
– Cyrus
Nov 24 '18 at 9:08




Try sed -i 's/r/n/g' *.
– Cyrus
Nov 24 '18 at 9:08












0






active

oldest

votes

















0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes

Popular posts from this blog

Contact image not getting when fetch all contact list from iPhone by CNContact

count number of partitions of a set with n elements into k subsets

A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks