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

[文本处理] 【已解决】批处理实现对文件指定倒数行的读取

[复制链接]
发表于 2023-7-17 18:53:43 | 显示全部楼层 |阅读模式
本帖最后由 思想之翼 于 2023-7-18 00:08 编辑

文本1.txt记录数值为:
9
8
7
6
5
4
3
2
1
0
8

问题1:欲用纯批或者第三方工具,根据倒数第1行数值N,本例是8,读取倒数第N+1行的数值,写入文本2.txt
文本2.txt结果为:
7

问题2:欲用纯批或者第三方工具,根据倒数第1行数值N,本例是8,读取倒数第N+1行, 倒数第N+10行, 倒数第N+20行的数值,合并写入文本2.txt
文本2.txt的数据排列结构为:
7
x
y

http://www.bathome.net/viewthrea ... 1%2B%D0%D0%2B%CA%FD
注:参考该贴,搞不定如何读取倒数行的问题。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-7-17 20:55:45 | 显示全部楼层
  1. ::以下是问题2 代码2; 把第8行中的 9 19 删除就是代码1
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. for /f "useback delims=" %%a in ("1.txt") do (
  5.         set /a n+=1
  6.         set m=%%a
  7. )
  8. (for %%a in (0 9 19) do (
  9.         set /a l=n-m-%%a,k=0
  10.         for /f "useback delims=" %%b in ("1.txt") do (
  11.                 set /a k+=1
  12.                 if !k! equ !l! echo %%b
  13.         )
  14. ))>"2.txt"
  15. endlocal
  16. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

发表于 2023-7-18 05:13:01 | 显示全部楼层
用的busybox-w32
sed '$s/[^0-9]*$/\n/' a.txt | tac | awk 'NR==1{n=1+$0}NR==n{print}'

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

发表于 2023-7-18 08:37:01 | 显示全部楼层
2楼代码第8、9行这样改一下应当更容易理解:
  1. (for %%a in (1 10 20) do (
  2.         set /a l=n-m-%%a+1,k=0
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 感谢分享

查看全部评分

发表于 2023-7-18 09:03:40 | 显示全部楼层
  1. gawk -v "s=1 10 20" "BEGIN{split(s, a)} {b[NR]=$0} END {for(i in a)print b[NR-b[NR]-a[i]+1]}" 1.txt > 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-7-18 10:11:34 | 显示全部楼层
回复 5# WHY
感谢!经实测,读取结果第1行为空。
发表于 2023-7-18 10:53:49 | 显示全部楼层
回复 6# 思想之翼


    出现这种问题最好给一个真实的测试文本,
我测试没问题,而你测试有问题,那到底是什么问题?天知道。

评分

参与人数 1技术 +1 收起 理由
思想之翼 + 1 测试正确。出错原因:文件末尾多了一空行。

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 18:26 , Processed in 0.017692 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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