[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回CUer老师,sed 版本 4.1.5
输出不但所有段落都合并了,而且原文本的每行的在输出后就加了一个小小的黑色方块■

TOP

输出结果是txt中所有段落都合并了?你用的哪个版本的sed啊?

TOP

  1. sed -i "/^详细说明/,${:a; $!N; s/\n//; ta; P; D}" *.txt
复制代码

TOP

原意是有N个txt文件需要处理,而且只处理位于txt中关键字是“详细说明”后面的段落(至文件尾),“详细说明”前面的所有文本内容均不处理,保持原状。

可能是我问题叙述的不太清晰。发个示例文件及处理后的文件,供各位老师参考。

CUer老师的sed只能执行1个文件,输出结果是txt中所有段落都合并了。
yangfengoo老师的代码思路是对的。不足之处就是文本末的最后面多出了一行,打印出了文件的路径,可否去掉这个路径。另外,可否在“详细说明”后面直接跟着下面的段落内容?

谢谢几位老师的大力帮助!

[ 本帖最后由 plues 于 2010-9-30 16:54 编辑 ]

TOP

先发个样本来看看。你的解释有点乱。

TOP

你有sed.exe吗?哪个版本?

TOP

感谢CUer老师热情相助!

以下是执行错误信息,烦请再修正一下错误:
环境变量 -i "/^详细说明/,${:a; $!N; s/\n//; ta; P; D}" 没有定义

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.txt) do (
  3.   for /f "delims=:" %%a in ('findstr /n "详细说明:" "%%~i"') do set n=%%a&set nn=
  4.   for /f "tokens=1* delims=:" %%a in ('type "%%~i" ^| findstr /n .*^&del /s/q "%%~i"') do (
  5.   if %%a leq !n! (echo,%%b>>"%%~i") else (set nn=!nn!%%b)
  6.   )
  7.   echo,!nn!>>"%%~i"
  8. )
  9. set /p=处理完毕
复制代码

TOP

  1. sed -i "/^详细说明/,${:a; $!N; s/\n//; ta; P; D}" 1.txt
复制代码

TOP

确实存在这个问题。“详细说明”后面的字数各个txt均不同。最少的有几十个字符,最多的一个有15000字。
如果批处理无法处理太多的字符,就判断txt文件的大小(1K字节以内的占绝大多数,1~10k字节的较少),如果大于多少k就跳过处理,只处理字数较少的就行了,字数多的手动修改。

TOP

详细说明 后面的字数如果过多久不好处理了

TOP

是的。如果偶尔有个txt文件不包含“详细说明”,那么跳过此文件即可,不用处理。

TOP

表达不准确

你的每个txt文本里面 都以 "详细说明"字符 后面的内容为目标?

TOP

返回列表