使用 sed 删除 LF 但保留 CRLF 在文件中

使用 sed 删除 LF 但保留 CRLF 在文件中

我在 CSV 文件中有未加引号的换行符 LF,我想将其加载到数据库,从而导致错误。我可以使用 sed 或 Linux 中可用的其他工具来删除此换行符吗?

CSV 文件的实际行结尾是 CRLF,如使用 Notepad++ pilcrow 观察到的。

答案1

对于awk支持RS单字符以外的值的实现(例如 GNU )awk,您可以执行以下操作:

awk 'BEGIN{RS = ORS = "\r\n"}
     {gsub("\n", ""); print}' < in.csv > out.csv

sed

CR=$(printf '\r')
sed -e :1 -e '$q' -e "/$CR\$/b" -e 'N;s/\n//;b1' < in.csv > out.csv

相关内容