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

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

Calculate evaluation metrics using cross_val_predict sklearn

Insert data from modal to MySQL (multiple modal on website)