首页 > 解决方案 > 如何在 Mac OS 上使用 sed 最后将“^M”替换为“,1”?

问题描述

如何使用 sed 在每行末尾添加“,1”?我使用的文件是这样的;

A
B
C

我试过这个;

sed 's/$/,1/' alphabets.txt > alphabets1.txt

得到了这个;

A
,1
B
,1
C
,1

但我想要的是这个;

A,1
B,1
C,1

当我尝试“https://stackoverflow.com/questions/15978504/add-text-at-the-end-of-each-line”的最佳答案时,我得到了一个空白页。

sed -n 's/$/,1/' alphabets.txt > alphabets2.txt

我发现最后有 ^M 使用 cat -vt 文件。如何删除它并将其更改为“,1”?

标签: sed

解决方案


Macsed是BSD sed。您可以在一个文件上尝试这个命令,可选地\r以删除\r和追加结尾1

sed -E $'s/\\\r?$/,1/'

A,1
B,1
C,1

确保您的 shellbash在运行此程序时正在运行。

您还可以使用:

sed -E 's/'$'\r''?$/,1/' file

$'\r'是要匹配的 BASH 字符串\r?之后使其成为可选。

请注意,这个 sed 命令也可以在gnu sed.


推荐阅读