免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2665 | 回复: 2
打印 上一主题 下一主题

[文本处理] 文本整块前提分别隔行插入、隔10删4行、倒置所有行。(求助三行代码化简)。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-04 20:20 |只看该作者 |倒序浏览
本帖最后由 lqs623 于 2014-12-04 21:50 编辑

要求简化下面的带gawk 的三行,在WINDOWS系统能用。(bat对所有字符都能通用)
复制下文存为bat文件执行 (bat创建的02.txt算原文,打开的04.txt就是需要的)
bat文件如下:(我不会搞复制代码,为什么我这个点击复制代码下来不换行)请用手选复制或附件:文本整块前提分别隔行插入、隔10删4行、倒置所有行.bat

  1. del 01.txt
  2. @set a=%date:~5,2%%date:~8,2%
  3. @set /a b=%a%+30
  4. @for /l %%a in (%a%,1,%b%) do echo 上/%%a>>01.txt
  5. @set a=%date:~0,4%%date:~5,2%%date:~8,2%
  6. @set /a b=%a%+30
  7. @for /l %%a in (%a%,1,%b%) do echo 下/%%a>>01.txt

  8. gawk "{a[NR]=$0}END{for(i=1;i<=NR/2;i++)print a[i]\"\n\"a[i+NR/2]}" 01.txt>02.txt                  &:: 02.txt算原文,04.txt就是需要的
  9. gawk "NR==1,NR==10";"NR==15,NR==24";"NR==29,NR==38";"NR==43,NR==52";"NR==57,NR==62" 02.txt>03.txt  &:: 02.txt每隔10删4行
  10. gawk "{A[i++]=$0} END{for (j=i-1;j>=0;j--) print A[j]}" 03.txt >04.txt                             &:: 03.txt倒置所有行,第一行变为最后一行

  11. 04.txt ::04.txt就是需要的
  12. del 01.txt
  13. del 02.txt
  14. del 03.txt
  15. del 04.txt
复制代码

文本整块前提分别隔行插入、隔10删4行、倒置所有行.rar

1.09 KB, 下载次数: 23

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2014-12-05 14:29 |只看该作者
test.bat
  1. @echo off
  2. REM set date=2014-12-05
  3. set a=%date:~5,2%%date:~8,2%
  4. set /a b=a+30
  5. (for /l %%a in (%a%,1,%b%) do echo 上/%%a)>01.txt
  6. set a=%date:~0,4%%date:~5,2%%date:~8,2%
  7. set /a b=%a%+30
  8. (for /l %%a in (%a%,1,%b%) do echo 下/%%a)>>01.txt

  9. REM 02.txt算原文,04.txt就是需要的
  10. REM gawk "{a[NR]=$0}END{for(i=1;i<=NR/2;i++)print a[i]\"\n\"a[i+NR/2]}" 01.txt >02.txt
  11. REM 02.txt每隔10删4行
  12. REM gawk "{n++;if(n==10){print;getline;getline;getline;getline;getline;n=1}}1" 02.txt >03.txt
  13. REM 03.txt倒置所有行,第一行变为最后一行
  14. REM gawk "{A[i++]=$0} END{for (j=i-1;j>=0;j--) print A[j]}" 03.txt >04.txt
  15. gawk "{a[NR]=$0}END{for(i=1;i<=NR/2;i++){b[++j]=a[i];b[++j]=a[i+NR/2]};for(k=1;k<=j;k++){c[++m]=b[k];n++;if(n==10){k+=4;n=0}};for(x=m;x>=1;x--)print c[x]}" 01.txt >04.txt
  16. del /f /q 01.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-12-06 16:28 |只看该作者
本帖最后由 lqs623 于 2014-12-06 16:35 编辑

回复 2# Shell_HAT


    非常感谢!非常感谢!了不得啊!让我惊叹不已!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP