标题: [文本处理] 批量提取N个文本的指定内容行数并加入序列 [打印本页]
作者: yihaotongtiam 时间: 2020-1-19 02:30 标题: 批量提取N个文本的指定内容行数并加入序列
这是之前ivor大佬帮助别人解决 “批量提取N个文本的指定内容行数”的代码
------------------------------------------------------
变量参考例子:
num=1..3 提取2(正数)至4(正数)行内容
num=3 提取第4(正数)行内容
num=-3 提取-3(倒数)行内容
num=-1..-3 提取-1(倒数)至-3(倒数)行内容
num=-1..3 提取-1(倒数)和 1 至 4(正数)行内容 慎用:不建议
num=1,5,9 提取2,6,10(正数)行内容
num=-1,-5,-9 提取-1,-5,-9(倒数)行内容
代码内容- <# :
- @echo off
- rem 增强代码兼容性,代码保存为 ".bat"、".cmd"、".ps1"均可执行
- powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- more +8 "%~f0" >"%~dpn0.ps1"
- powershell -File "%~dpn0.ps1"
- del "%~dpn0.ps1" & pause & exit /b
- #>
- del 输出结果.txt -ErrorAction "SilentlyContinue"
-
- $num = 1..3
-
- dir *.txt | foreach {
- $line = get-content "$_"
- foreach ($l in $line[$num])
- {
- -Join($_.Name, " ", $l) | out-file -Append "输出结果.txt"
- }
- }
复制代码
----------------------------------------------------------
我有一个额外的需求
输出结果的时候能否加一个序列
比如我提取的是文档的前两行,目前代码输出的结果如下:
- name: Fast
uuid: "57e0cb4d-eae5-48ec-8071-149dc2b3ea4q"
- name: Fast
uuid: "96e0cb4d-eare-4802-8091-149dc2b309e0"
想让输出带序列的结果,例如:
- name: Fast01
uuid: "57e0cb4d-eae5-48ec-8071-149dc2b3ea4q"
- name: Fast02
uuid: "96e0cb4d-eare-4802-8091-149dc2b309e0"
请问大佬如果修改一下实现这样的效果呢,求指点,不胜感激
作者: went 时间: 2020-1-20 21:51
本帖最后由 went 于 2020-1-20 21:53 编辑
一行输出本来就只有一行,你怎么有两行
[attach]12335[/attach]
上面的name
作者: /zhqsystem/zhq 时间: 2020-1-20 22:10
如果格式过于严格可以用find类进行判断,需要延迟变量
要求行条件和顺序,如果不同请以你的文本内容,if判断值需更改默认数字四位超限自行更改算法
Name:
UUID:
set "n=-1"
for /f "delims=" %%i in ('type "%~f1"')do (
for /f "tokens=1,* delims=:" %%j in ("%%i")do if /i "%%~j"=="Name" (
set/a "n+=1"
set "#=000000000000!n!"
set "#=!#:~-4!"
set "#temp=%%j: %%k!#!"
)else if /i "%%~j"=="UUID" (
echo,!#! !#temp!
echo,!#! %%i
)else (rem 这里是其它值
echo,!#! %%i
)
)
作者: yihaotongtiam 时间: 2020-9-9 12:29
回复 3# /zhqsystem/zhq
感谢大佬回复,萌新一个,听的云里雾里。。。
作者: xczxczxcz 时间: 2020-9-9 15:23
回复 4# yihaotongtiam
既然用ps 那直接对象化,然后添加一个序号属性。剩下的想怎么玩就怎么玩。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |