如何优雅地 dos2unix

 | tr -d '\15' |

注:只是出来的流没有 ^M 了,并没有改动文件。

事情是这样的:美赛的时候队友跑模拟,我用 node.js 画图,需要先把以下的格式化输出

4 14 1 0 F
4 16 1 1 F
4 35 1 0 T

转换成 json 格式:

[
{"x":4,"y":14,"type":"r","progress":1,"bus":false},
{"x":4,"y":16,"type":"w","progress":1,"bus":false},
{"x":4,"y":35,"type":"r","progress":1,"bus":true},
...
]

其实用 awk 一下就出来了,倒也是没什么困难的;但是呢,发现最后一个数据项横竖转换不了,读倒是能读出来……难道是 awk 打开姿势不对?

printf "{\"x\":%d,\"y\":%d,\"type\":\"%s\",\"progress\":%d,\"bus\":%s},", x, y, type, p, (($5 == "T") ? "true" : "false");

想了一下还是不要把纠结的那部分写出来了

对!问题就是出在 $5 == "T"$5 == "F" 都不成立!因为

$ xxd output | head -n 1
00000000: 3420 3134 2031 2030 2046 0d0a 3420 3136  4 14 1 0 F..4 16

md 怎么又是你 ^M

好吧手边没有 dos2unix ,不过总还有替代方案的= =用 tr 就行了。


P.S. 发现 d3.js 好有意思……