• 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11
  • 补时绝杀!英格兰2-1突尼斯 凯恩梅开二度 2019-03-09
  • 我和党报党网有个约会在线征集活动 2019-03-09
  • 吃饭刷脸 还有多远? 2019-03-07
  • 中共中央文件选集一(1921―1925) 2019-03-05
  • 《中国气候变化蓝皮书》:年平均气温显著上升 2019-03-05
  • 这样的银行就应该倒闭 2019-03-01
  • 有兴趣的朋友可以去看咱的《机器人普及时代的生产关系》…… 2019-03-01
  • 中国欲举办2030年世界杯?网友调侃:真可笑 2019-02-26
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    粤广东11选五5开奖结果:[文本处理] 如何删除文本中的指定字符串并反转/颠倒文本行顺序

    本帖最后由 pcl_test 于 2018-11-22 03:37 编辑

    求批处理文本 数字内容 排列方法
    文本内容1万行为纯数字  如图1  想把文本中 所有开头的20去掉  同时将 后面5位数字之间的空格去掉  实现图2效果  并能 倒过来排列  求大神指教代码
    附件: 您需要登录才可以下载或查看附件。没有帐号?注册
    1. @echo off&setlocal enabledelayedexpansion
    2. for /f "tokens=1-7 delims= " %%i in (1.txt) do (
    3.   set "aa=%%i"
    4.   set aa=!aa:~2!
    5. echo !aa! %%j%%k%%l%%m%%n%%o>>2.txt
    6. )
    7. pause
    复制代码
    目的,学习批处理

    TOP

    1. @set @n=0;/* & echo off
    2. dir /b *.txt|cscript -nologo -e:jscript "%~0" ""
    3. exit/b & rem */
    4. arg = WScript.Arguments(0);
    5. fso = new ActiveXObject("Scripting.FileSystemObject");
    6. while (!WSH.StdIn.AtEndOfStream) {
    7.     f = WSH.StdIn.ReadLine();
    8.     txt = fso.OpenTextFile(f,1).ReadAll();
    9.     txt = txt.replace(/^..(\d+ \d) (\d) (\d) (\d) (\d)/mg,"$1$2$3$4$5");
    10.     fso.OpenTextFile(f,2).Write(txt);
    11. }
    复制代码

    TOP

    回复 2# hlzj88
    1. @echo off
    2. setlocal enabledelayedexpansion
    3. (for /f "tokens=1-7" %%i in (1.txt) do (
    4.     set "aa=%%i"
    5.     echo !aa:~2! %%j%%k%%l%%m%%n%%o
    6. ))>2.txt
    复制代码
    一万行的文本不算小,建议把重定向放到for循环外面,提高执行效率。
    【扫描二维码捐助论坛的朋友请留言注明论坛账号】//bbs.bathome.net/thread-10403-1-1.html
    【批处理在线视频分享】//bbs.bathome.net/thread-31727-1-1.html
    【微信公众号、微信群、QQ群】//bbs.bathome.net/thread-3473-1-1.html

    TOP

    回复 4# Batcher

    谢谢提醒,细节决定速度。
    目的,学习批处理

    TOP

    回复 4# Batcher
    感谢 各位大神指教  等下测试一下

    TOP

    本帖最后由 hqhlwz 于 2018-11-13 23:10 编辑

    回复 4# Batcher
    测试效果  速度很快 几秒 就好   再请教 如何  将 这1万行数字  倒过来重新排列呢 如图
    谢谢
    附件: 您需要登录才可以下载或查看附件。没有帐号?注册

    TOP

    回复 2# hlzj88
    感谢指示  转换后的结果  如何能   从后而上  倒过来重新排列呢  谢谢

    TOP

    回复 8# hqhlwz
    1. sort /r 1.txt /o 2.txt
    复制代码

    TOP

    本帖最后由 hqhlwz 于 2018-11-14 14:25 编辑

    回复 9# flashercs
    如何整合到图片中的代码呢?
    附件: 您需要登录才可以下载或查看附件。没有帐号?注册

    TOP

    本帖最后由 xczxczxcz 于 2018-11-14 18:26 编辑

    几万行用纯P,一行行倒过来赋值给变量。速度估计个把小时。
    下面的为 PowerShell 版。WIN7以上系统可用。PS3.0以上最好。
    121440行。约12秒完成 修改并全部倒排。
    1. $StartTime= Get-date # 开始计时
    2. ((cat ".\00.txt") | %{
    3. $str=$_ -replace "^20","" -replace "[\s]",""
    4. $str.insert(10," ")
    5. }
    6. ) | SC "$env:temp\ref.txt"
    7. $Total = (cat "$env:temp\ref.txt" -TotalCount -1).Count
    8. (Cat "$env:temp\ref.txt")[$Total..0] | SC ".\ok.txt"
    9. Ri "$env:temp\ref.txt" -force
    10. Write-host "共用时间:"([DateTime]::Now - $StartTime).TotalMilliseconds"毫秒" -Fore RED
    11. # 计时结束
    12. pause
    复制代码
    ===========保存为 xxx.ps1  点右键用 windows powershell 运行。系统自带
    -------------------------------------------------------------------------------------------------------

    附上 纯P 供参考:
    1. @echo off & cd /d "%~dp0"
    2. echo %time%
    3. setlocal EnableDelayedExpansion
    4. for /f "tokens=1*" %%a in (00.txt) do (
    5. set "aa=%%a"
    6. set "bb=%%b"
    7. set /a n+=1
    8. set "str!n!=!aa:~2! !bb: =!"
    9. rem echo !aa:~2! !bb: =!
    10. )
    11. (for /l %%e in (%n% -1 1) do echo !str%%e!)>final.txt
    12. echo %time%
    13. pause & exit
    复制代码
    注不要用 sort /r 它会按大小排序。

    TOP

    本帖最后由 hqhlwz 于 2018-11-14 19:36 编辑

    回复 11# xczxczxcz
    感谢你的提示 刚测试你的方法 用sort的方法 也测试了 结果是一样  但使用大神你的代码  转换过程有点慢  能否提高一下效率呢

    附上 测试文件 下载地址//data.917500.cn/cqssc_10000.txt
    附件: 您需要登录才可以下载或查看附件。没有帐号?注册

    TOP

    回复 12# hqhlwz


        偶那个是倒排的。不是倒序排列。倒序是从大到小排列。若你的原始文档是从小到大排好的。那倒排和倒序是一样的。用 sort /r 当然快。若你的原始文本内容并不是从小到大排列,是乱序的。倒排和倒序就不一样了。偶写的是倒排。不管你原始顺序如何。都是按原文本从后到前排列。不会受字符大小的影响??茨愕男枨罅?。

    TOP

    回复 12# hqhlwz

        针对你这个文本。全是从小到大的排序。当然简单了。

    纯 P 约 2秒
    1. @echo off & cd /d "%~dp0"
    2. echo %time%
    3. setlocal EnableDelayedExpansion
    4. (for /f "tokens=1*" %%a in (00.txt) do (
    5. set "aa=%%a"
    6. set "bb=%%b"
    7. echo !aa:~2! !bb: =!
    8. ))>%temp%\ref.txt
    9. sort /r "%temp%\ref.txt" /o final.txt
    10. del /q/f "%temp%\ref.txt"
    11. echo %time%
    12. pause
    复制代码
    =============================
    纯 PS 约 0.6秒
    1. $StartTime= Get-date # 开始计时
    2. ((cat ".\00.txt") | sort -desc | %{
    3. $str=$_ -replace "^20","" -replace "[\s]",""
    4. $str.insert(10," ")
    5. }
    6. ) | SC ".\ok.txt"
    7. $Time = [DateTime]::Now - $StartTime
    8. Write-host "共用时间:"$Time.Seconds"秒 "$Time.Milliseconds"毫秒" -Fore RED
    9. # 计时结束
    10. pause
    复制代码
    ==============================

    TOP

    本帖最后由 WHY 于 2018-11-16 19:50 编辑
    1. gawk "{a[NR]=substr($1,3)\" \"$2\"\"$3\"\"$4\"\"$5\"\"$6}END{for(i=NR;i>0;i--)print a[i]}" 1.txt > 2.txt
    复制代码
    1. PowerShell "[Collections.ArrayList]$arr=[IO.File]::ReadAllLines('1.txt') -replace '^20|(?<!\d\d)\s';$arr.Reverse();sc 2.txt -Value $arr"
    复制代码
    1. sort /r 1.txt | sed -r "s/^20|\s//g; s/[0-9]{5}$/ &/" > 2.txt
    复制代码

    TOP

    返回列表
  • 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11
  • 补时绝杀!英格兰2-1突尼斯 凯恩梅开二度 2019-03-09
  • 我和党报党网有个约会在线征集活动 2019-03-09
  • 吃饭刷脸 还有多远? 2019-03-07
  • 中共中央文件选集一(1921―1925) 2019-03-05
  • 《中国气候变化蓝皮书》:年平均气温显著上升 2019-03-05
  • 这样的银行就应该倒闭 2019-03-01
  • 有兴趣的朋友可以去看咱的《机器人普及时代的生产关系》…… 2019-03-01
  • 中国欲举办2030年世界杯?网友调侃:真可笑 2019-02-26