标题: [文本处理] 批处理怎样实现文本选择性的重新排版? [打印本页]
作者: 灯塔彭于晏 时间: 2021-3-3 22:59 标题: 批处理怎样实现文本选择性的重新排版?
您好,谢谢你的帮助了。
现有文本A.TXT,内容如下:- 你好我是谁
- 不知道
- <div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
- 你好我是谁
- 不知道
- <div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
-
-
- 你好我是谁
- 不知道
- <div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
- 你好我是谁
- 不知道
- <div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
-
- 你好我是谁
- 不知道
- <div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
复制代码
每组内容中间的空行不一定, 内容格式是一样的。
想要实现的效果是: 每组内容中第三行的<div #&@*#&@*#</div> ,移动到第2行的文字的末尾。- 你好我是谁
- 不知道<div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
- 你好我是谁
- 不知道<div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
-
-
- 你好我是谁
- 不知道<div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
- 你好我是谁
- 不知道<div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
-
-
- 你好我是谁
- 不知道<div class="tupian"><span></span></div>
- 啊,啊啊,22SS,随时随地
- suishisuidi
复制代码
作者: qixiaobin0715 时间: 2021-3-4 06:59
- @echo off
- setlocal enabledelayedexpansion
- set m=0
- for /f "delims=" %%a in ('findstr /n ".*" test.txt') do (
- set "str=%%a"
- if "!str:*:=!"=="" (
- echo,
- set m=0
- ) else (
- set /a m+=1
- if !m!==2 (
- set str1=!str:*:=!
- ) else if !m!==3 (
- echo,!str1!!str:*:=!
- ) else (
- echo,!str:*:=!
- )
- )
- )
- pause
复制代码
作者: xczxczxcz 时间: 2021-3-4 14:19
来个字节的- powershell "[IO.File]::WriteAllBytes(\"$(gl)\结果.txt\", [byte[]]([regex]::Replace(((gc '.\a.txt' -read 0 -enc Byte) -join ','),'(13,)?10,60,','60,') -split ','))"
复制代码
作者: qixiaobin0715 时间: 2021-3-5 13:00
这样要比2楼的代码要通用一些:- @echo off
- setlocal enabledelayedexpansion
- set m=0
- (for /f "delims=" %%a in ('findstr /n ".*" a.txt') do (
- set "str=%%a"
- if "!str:*:=!"=="" (
- if defined str1 echo !str1!
- set str1=
- echo,
- ) else (
- set "str=!str:*:=!"
- if not "!str:~0,1!"=="<" (
- if defined str1 echo !str1!
- set str1=!str!
- ) else (
- echo !str1!!str!
- set str1=
- )
- )
- )
- echo !str1!)>b.txt
- pause
复制代码
作者: WHY 时间: 2021-3-6 12:37
本帖最后由 WHY 于 2021-3-6 19:35 编辑
- sed -r ":a; N; /\n(<div)/!ba; s//\1/" a.txt > b.txt
复制代码
- gawk "BEGIN{RS=\"\n^<div\"}{if(flag)printf s\"^<div\";else flag=1;s=$0}END{printf s}" a.txt > b.txt
复制代码
作者: WHY 时间: 2021-3-6 12:51
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('findstr /n .* a.txt') do (
- set "curLine=%%i"
- set "curLine=!curLine:*:=!"
- if defined flag (
- if "!curLine:~0,4!" NEQ "<div" (
- echo;!preLine!
- ) else (
- set /p "=!preLine!" <nul
- )
- ) else (
- set flag=1
- )
- set "preLine=!curLine!"
- )
- if defined flag echo;!preLine!
- pause
复制代码
作者: 灯塔彭于晏 时间: 2021-10-10 18:36
回复 6# WHY
求教一下WHY大大,想请您帮忙实现一下。 下面这段代码中(路径为/桌面/1.txt),一共有3组内容,每5行内容为1组。每组内容的最后都是一串数字(已加粗显示)。
请问能否用JS的形式写一下。 获取变量{shuzi}中的数字,把它所在的那一整组内容都删掉。(定位到数字所在行,删除掉包括数字所在行 及 向上的4行内容[共5行/一组])。
效果在最后。- 星月夜|c7肘的博丽灵梦1
- <div class="tip2">…………</div>
- 博丽灵梦
- ,博丽灵梦,
- [b]3484454411[/b]
- 星月夜|c7肘的博丽灵梦2
- <div class="tip2">…………</div>
- 博丽灵梦
- ,博丽灵梦,
- [b]34844544222[/b]
- 星月夜|c7肘的博丽灵梦3
- <div class="tip2">…………</div>
- 博丽灵梦
- ,博丽灵梦,
- [b]348445443333[/b]
复制代码
假设变量 {shuzi}的内容为34844544222 ,就删除掉了第2组,从而结果如下:- 星月夜|c7肘的博丽灵梦1
- <div class="tip2">…………</div>
- 博丽灵梦
- ,博丽灵梦,
- [b]3484454411[/b]
- 星月夜|c7肘的博丽灵梦3
- <div class="tip2">…………</div>
- 博丽灵梦
- ,博丽灵梦,
- [b]348445443333[/b]
复制代码
谢谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |