linux - Perl(或其他东西)- ^M 问题

标签 linux perl

我试图在 Perl 文本文件的每个非空行的开头添加 "",

perl -pi -e 's/^(.+)$/\"$1\",/g' something.txt

它在每个非空行的开头添加了 ",但我对 ", 有疑问。

示例输入:

bla
bla bla
blah

这是我得到的输出:

"bla
",
"bla bla
",
"blah
",

这就是我真正想要的输出:

"bla",
"bla bla",
"blah",

我该如何解决这个问题?

编辑: 我现在在 vim 中打开我的输出文件(我之前在 kwrite 中打开它所以它不可见)并且我注意到 vim 在每个 ", 之前显示 ^M - 我不不知道代码中添加了什么。

最佳答案

看起来像是行结束问题 - 您是否在 Windows 中编辑了文件?试试 dos2unix

如果你不想使用 dos2unix,你可以匹配\r:

perl -pi -e 's/^(.+)\r$/\"$1\",/g'

问题是,如果您在文件中有返回值,它将在 .* 中匹配它们,因此您将得到:

"bla^M",
"bla bla^M",
"blah^M",

关于linux - Perl(或其他东西)- ^M 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836217/

相关文章:

php - php上传文件时group和owner权限错误

linux - 为什么我的自定义 Perl 不能安装到预期的目录中?

c# - PerlEmbed - C# - 单声道 - Linux

multithreading - Perl 恢复一个线程

perl - 如何将 `our` 类变量与 `UNITCHECK` 正确地与 `use strict` 一起使用?

perl - 尝试使用 fast-cgi 和 lighttpd 运行 perl 脚本,但文件只是下载

c - 如何将 "cut"命令的输出附加为循环中文件的下一列?

linux - 使用 Linux 虚拟鼠标驱动程序

java - 找不到 DDMS 文件/opt/android-sdk-linux/platform-tools/hprof-conv ubuntu

Perl 密码学 : Encrypting/Decrypting ASCII chracters with pack and unpack functions