需要把 \r\n 转成 \n,最近学过 sed,看看它有什么解法。
man sed 显示,Mac 自带的 sed 非常老旧,来自 2005 年的 FreeBSD。
第一种解法 sed 's/\r//'
,没用
~ $ printf '\r\n' | hexdump -C
00000000 0d 0a |..|
00000002
~ $ printf '\r\n' | sed 's/\r//' | hexdump -C
00000000 0d 0a |..|
00000002
~ $ printf '\r\n' | sed -E 's/\r//' | hexdump -C
00000000 0d 0a |..|
00000002
它的正则表达式到底怎么表示 \r?试过 \x0d 也不行。
gnu 版本是可以的,但是不考虑,要自己单独装
~ $ printf '\r\n' | gsed -E 's/\r//' | hexdump -C
00000000 0a |.|
00000001
第二种解法手打 ^M ,不好
Zsh 里 C-v C-m 或者 Emacs 里 C-q C-m,一是手打麻烦,需要记忆,二是直接插入脚本里不美观
第三种解法 sed s/.$//
,可行但不完美
它的前提是每一行都是以 \r\n 结尾,我觉得还是测试下更加安全。