• 让山里娃感受智慧科技乐趣 2019-05-19
  • 香港田径锦标赛飞人夺冠 2019-05-19
  • 诽谤侮辱英烈可追刑责 2019-05-14
  • 图解:十二字“洞见”2017年保险业 2019-04-28
  • 楼市下半年或持续降温 房地产长效机制加速推进 2019-04-28
  • 为何越来越多的日本人开始找兼职? 2019-04-26
  • 人民网评:还老百姓蓝天白云、繁星闪烁 2019-04-26
  • 广州市第十五届人大常委会会议网络直播 2019-04-20
  • “西瓜足迹”瞎掰与“晒的虚荣” 2019-04-20
  • 习近平两会“典”亮新时代 2019-04-07
  • 中国足球,就是笑博士的“责权利平滑对接”改革的必然结果! 2019-04-03
  • 重庆高校陆续公布招生计划、专业设置情况和新政策 2019-04-03
  • 新时代 新气象 新作为 2019-03-30
  • 《中国地方志佛道教文献汇纂》——开辟佛道教研究新领域 2019-03-29
  • 拉萨市墨竹工卡县全力打造“绿色矿山” 2019-03-29
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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-05-19
  • 香港田径锦标赛飞人夺冠 2019-05-19
  • 诽谤侮辱英烈可追刑责 2019-05-14
  • 图解:十二字“洞见”2017年保险业 2019-04-28
  • 楼市下半年或持续降温 房地产长效机制加速推进 2019-04-28
  • 为何越来越多的日本人开始找兼职? 2019-04-26
  • 人民网评:还老百姓蓝天白云、繁星闪烁 2019-04-26
  • 广州市第十五届人大常委会会议网络直播 2019-04-20
  • “西瓜足迹”瞎掰与“晒的虚荣” 2019-04-20
  • 习近平两会“典”亮新时代 2019-04-07
  • 中国足球,就是笑博士的“责权利平滑对接”改革的必然结果! 2019-04-03
  • 重庆高校陆续公布招生计划、专业设置情况和新政策 2019-04-03
  • 新时代 新气象 新作为 2019-03-30
  • 《中国地方志佛道教文献汇纂》——开辟佛道教研究新领域 2019-03-29
  • 拉萨市墨竹工卡县全力打造“绿色矿山” 2019-03-29