bash:将五行输入组合到每行输出
发布时间:2020-12-16 01:56:05 所属栏目:安全 来源:网络整理
导读:我有一个输入文件如下: MB1 00134141 MB1 12415085 MB1 13253590MB1 10598105MB1 01141484......MB1 10598105 我想组合5行并将其合并为一行. 我希望我的bash脚本处理bash脚本以生成输出,如下所示 – MB1 00134141 MB1 12415085 MB1 13253590 MB1 10598105 M
我有一个输入文件如下:
MB1 00134141 MB1 12415085 MB1 13253590 MB1 10598105 MB1 01141484 ... ... MB1 10598105 我想组合5行并将其合并为一行. MB1 00134141 MB1 12415085 MB1 13253590 MB1 10598105 MB1 01141484 ... ... ... 我写了下面的脚本,它可以工作,但对于大小为23051行的文件来说速度很慢. #!/bin/bash file=timing.csv x=0 while [ $x -lt $(cat $file | wc -l) ] do line=`head -n $x $file | tail -n 1` echo -n $line " " let "remainder = $x % 5" if [ "$remainder" -eq 0 ] then echo "" fi let x=x+1 done exit 0 我试图执行以下命令,但它弄乱了一些数字. cat timing_deleted.csv | pr -at5 解决方法
在纯粹的bash中,没有外部进程(为了速度):
while true; do out=() for (( i=0; i<5; i++ )); do read && out+=( "$REPLY" ) done if (( ${#out[@]} > 0 )); then printf '%s ' "${out[@]}" echo fi if (( ${#out[@]} < 5 )); then break; fi done <input-file >output-file 这可以正确处理行数不是5的倍数的文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux redis 安装配置, 以及redis php扩展
- 六、传递、返回复杂类型的对象
- scala – 无法初始化编译器:找不到编译器镜像中的对象java
- 如何在两个模块之间共享服务 – @NgModule在角度之间而不是
- scala – 使用Spark 2.0.2(结构化流媒体)从Kafka阅读Avro消
- Bootstrap table中toolbar新增条件查询及refresh参数使用方
- AngularJS工厂http返回空
- angular 百度下拉 jsonp 请求
- scala – Lazy foldRight提前终止混乱
- 使用(AngularJS 2)和ASP.net MVC Web API进行文件上载