【发布时间】:2016-12-07 11:10:46
【问题描述】:
我正在寻找一个 shell 命令来删除两行中的一行的返回战车。 我有一个这样的文件:
1.32640997
;;P
1.14517534
;;P
1.16120958
;;P
...
我想要这样的东西:
1.32640997;;P
1.14517534;;P
1.16120958;;P
...
有可能吗? 谢谢
【问题讨论】:
标签: shell
我正在寻找一个 shell 命令来删除两行中的一行的返回战车。 我有一个这样的文件:
1.32640997
;;P
1.14517534
;;P
1.16120958
;;P
...
我想要这样的东西:
1.32640997;;P
1.14517534;;P
1.16120958;;P
...
有可能吗? 谢谢
【问题讨论】:
标签: shell
paste
paste -d '' - - < file
paste
paste -d '\0' - - < file
paste 从标准输入生成两列,以- - 作为参数,三列以- - - 作为参数,依此类推。
-d是指定列分隔符,使用'\0'表示无分隔符。
perl -ne 'chomp($prev = $_); print $prev, scalar <>' < file
【讨论】:
使用 xargs:
xargs -n 2 -d '\n' printf '%s%s\n' <file
【讨论】:
$ awk '{printf "%s%s",$0,(NR%2==0?ORS:"")}' File
1.32640997;;P
1.14517534;;P
1.16120958;;P
这将打印每一行,奇数行不打印,偶数行打印输出记录分隔符。
这是通过成对阅读来实现的:
$ sed 'N; s/\n//' File
1.32640997;;P
1.14517534;;P
1.16120958;;P
N 读取下一行,s/\n// 删除换行符。
【讨论】:
paste 解决方案要好,因为 sed 和 awk 更广泛可用(例如,如果我没记错的话,在 Git Bash 中没有 paste)