我试图在 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/