找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考

[文本处理] [已解决]批处理怎样平均每300行文字另外生成一个txt的文本?

[复制链接]
发表于 2015-2-12 00:35:39 | 显示全部楼层
回复 16# yiwuyun


奇思妙想,nice!

那个多余的 p 可以这样去掉:
  1. sed -n "=" a.txt|sed -n "1~6H;${g;p}"
复制代码
或者这样:
  1. sed -n "=" a.txt|sed -n "${p;q};1~6p"
复制代码
发表于 2015-2-12 02:34:14 | 显示全部楼层
回复 16# yiwuyun


借兄台代码,改写成这样就没问题了,思路不变:
  1. sed -n "$=;$q;0~6=;1~6=" a.txt|sed -nr "N;s/\n(.*)/,\1w/;p"|sed -n "p;="|sed -r "N;s/\n(.*)$/\1.txt/"|sed -nf - a.txt
复制代码
这个思路下还能继续简化吗...
发表于 2015-2-12 12:04:00 | 显示全部楼层
很好, sed造诣够深的,佩服,学习了。对最后一行的处理可能还需要冗余一下。要不然最后一行可能丢失。

  1. sed -n "$=;$q;0~6=;1~6=" a.txt|sed -nr "${h;G;s/\n(.*)/,\1w/;p};N;s/\n(.*)/,\1w/;p"|sed -n "p;="|sed -r "N;s/\n(.*)$/\1.txt/"|sed -nf - a.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 感谢指正!

查看全部评分

发表于 2015-2-12 21:35:56 | 显示全部楼层
回复 19# yiwuyun


感谢提醒,不过你想复杂了,其实 sed 的 N 在碰到 $ 时,会阻止后面的指令,所以行数若为奇数行,最后一行是不会被输出的
简单把
  1. sed -n "$=;$q;0~6=;1~6="
复制代码
改成
  1. sed -n "${=;=;q};0~6=;1~6="
复制代码
就可以了

完整的就是
  1. sed -n "${=;=;q};0~6=;1~6=" a.txt|sed -nr "N;s/\n(.*)/,\1w/;p"|sed -n "p;="|sed -r "N;s/\n(.*)$/\1.txt/"|sed -nf - a.txt
复制代码
发表于 2015-2-13 12:35:43 | 显示全部楼层
本帖最后由 terse 于 2015-2-13 12:37 编辑

回复 20# CrLf
我试下这样也可以
反正最后行始终打印行号
  1. @sed -n "$=;0~6=;1~6="
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 感谢指点!

查看全部评分

发表于 2015-2-13 14:03:25 | 显示全部楼层
回复 21# terse


    也是,哎呀好暴力
发表于 2015-5-21 21:53:51 | 显示全部楼层
如果问题已解决,请在标题最前面标上[已解决]
http://www.bathome.net/thread-3473-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 02:36 , Processed in 0.018646 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表