Board logo

标题: [文本处理] 求助制作批处理删除文本中的指定字符 [打印本页]

作者: sg1968321    时间: 2022-9-7 05:37     标题: 求助制作批处理删除文本中的指定字符

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


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


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

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


aaaaaaa   123.456.


abcdefg   111.333.
作者: yakeyun    时间: 2022-9-7 07:12

本帖最后由 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
复制代码

作者: hfxiang    时间: 2022-9-7 08:45

如果行数太多,批处理的效率可能偏低,建议用第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
复制代码

作者: hfxiang    时间: 2022-9-7 09:15

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

作者: hfxiang    时间: 2022-9-9 13:10

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





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2