[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 求助制作批处理删除文本中的指定字符

我有大量文本行如下;
aaaaaaaa   <aaa>123.<bbb>456.<ccc>


abcdefg  <ddd>111.<eee>333.<fff>  


.....    ........

有几十万行,如何批量清除"<>"中的字符,变成:


aaaaaaa   123.456.


abcdefg   111.333.

以下示例用 awk ( http://bcn.bathome.net/tool/4.1.0/gawk.exe ) 的命令行来实现
  1. gawk "{gsub(/<[^>]*>/,\"\")};1" a.txt>b.txt
复制代码

TOP

如果无跨行的尖括号,可简化如下:
  1. sed -e "s/<[^>]*>//g" a.txt>b.txt
复制代码

TOP

如果行数太多,批处理的效率可能偏低,建议用第3方工具,如sed( http://bcn.bathome.net/tool/4.8/sed.exe ),当然unix的文本三剑客之一awk或其它工具也行,以下示例是用sed的命令行来实现
  1. sed -e :a -e "s/<[^>]*>//g;/</N;//ba" a.txt>b.txt
复制代码

TOP

本帖最后由 yakeyun 于 2022-9-7 07:16 编辑

回复 1# sg1968321

测试没问题后,再加一句删除1.txt,并把2.txt命名为1.txt.
  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. (for /f "tokens=1,3,5 delims=<>^ " %%a in (1.txt) do (
  5. echo %%a   %%b%%c
  6. ))>2.txt
  7. mshta vbscript:msgbox("数据处理完成!")(window.close)
  8. exit
复制代码

TOP

返回列表