sed在存在未识别字符时不匹配模式



我正试图从任何匹配行的文件中删除//和行尾之间的所有内容。

所以我在做:

sed -i -e 's://.*$::g' file

而且它几乎完美地工作。除了这条讨厌的线,上面有这些特殊的字符,没有动过。

// Date � � � Owner � � � � � � �Short description

我不知道那些角色是什么,我真的不在乎。为什么.*与这些字符不匹配?

文件(本例中为iso-8859-1(和操作系统(本例为UTF-8(之间的编码不一致很容易导致问题。

将输入文件转换为系统的默认UTF8。有几种实用程序可以做到这一点。一个是iconv。尝试:

iconv -f iso-8859-1 -t utf8 file >newfile

然后使用CCD_ 5。

旁白

另一个微妙的问题是行尾。如果源文件是iso-8859-1,它曾经在Windows机器上编辑过吗?如果是这样的话,它可能有DOS/Windows行结尾,当与Unix工具一起使用时,这会导致各种不明显的问题。使用dos2unix或类似的实用程序转换行尾。

最新更新