Board logo

标题: [文本处理] [已解决]批处理如何删除2字以上的词组及其编码? [打印本页]

作者: 每天几分    时间: 2015-4-13 13:03     标题: [已解决]批处理如何删除2字以上的词组及其编码?

本帖最后由 每天几分 于 2015-4-13 14:35 编辑

一个输入法的查询码表,要求把词组及其编码全部删除,只保留前面的单字及其编码。

原文本:
  1. 赞eqe eqem赞美tfug赞歌tfsk赞扬tfrn赞颂tfwc赞同tfmg赞叹tfkc赞赏tfip赞助tfeg赞成tfdn
  2. 得tj tjgf得意tjuj得知tjtd得失tjrw得以tjny得力tjlt得罪tjld得当tjiv得法tjif得分tjwv得到tjgc得体tjws得志tjfn得出tjbm得奖tjuq得心应手tnyr得意忘形tuyg得天独厚tgqd得寸进尺tffn得过且过tfef
  3. 竺tff
  4. 舶ter terg
  5. 街tffh街道tfut街头tfud街市tfym
  6. 笑ttd ttdu笑话ttyt笑容ttpw笑容可掬tpsr笑逐颜开teug
  7. 不i gii不许giyt不比gixx不停giwy不分giwv不但giwj不便giwg不仅giwc不妨givy不如givk不准giuw不曾giul不管gitp不得gitj不利gitj不息gith不行gitf不知gitd不要gisv不禁giss不可gisk不久giqy不多giqq不够giqk不解giqe不然giqd不错giqa不容gipw不安gipv不宜gipe不料giou不断gion不必gint不怕ginr不懈ginq不慎ginf不敢ginb不惜gina不同gimg不只gikw不足gikh不易gijq不是gijg不时gijf不当giiv不觉giip不满giia不该giyy不止gihh不平gigu不幸gifu不过gifp不用giet不成gidn不大gidd不顾gidb不难gicw不对gicf不能gice不良giyv不由得gmtj不见得gmtj不得已gtnn不得不gtgi不得了gtbn不定期gpad不必要gnsv不在乎gdtu不能不gcgi不谋而合gydw不置可否glsg不遗余力gkwl不入虎穴gthp不言而喻gydk不约而同gxdm不可分离gswy不可思议gsly不相上下gshg不可否认gsgy不可开交gsgu不学无术gifs不可一世gsga不可救药gsfa不打自招grtr不择手段grrw不卑不亢grgy不折不扣grgr不闻不问gugu不知所措gtrr不屈不挠gngr不正之风ggpm不动声色gffq不求甚解gfaq不胜枚举gesi不受欢迎gecq不翼而飞gndn不知所云gtrf不耻下问gbgu不切实际gapb不劳而获gada不甘落后gaar
复制代码
最终得到文本如下:
  1. 赞eqe eqem
  2. 得tj tjgf
  3. 竺tff
  4. 舶ter terg
  5. 街tffh
  6. 笑ttd ttdu
  7. 不i gii
复制代码
谢谢楼下两位朋友的帮助参与!
作者: pcl_test    时间: 2015-4-13 14:01

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in ('type "测试.txt"') do (
  4. set "str=%%a"
  5. set "n=!str:~,1!"
  6. call :loop "!str!" !n!
  7. ))>"结果.txt"
  8. pause
  9. :loop
  10. for /f "tokens=1 delims=%2" %%i in (%1) do echo,%2%%i
  11. goto :eof
复制代码

作者: apang    时间: 2015-4-13 14:10

  1. @set @n=0;// & cscript -nologo -e:jscript "%~0"<a.txt>b.txt & pause & exit/b
  2. s = WScript.StdIn.ReadAll().replace(/[^\x00-\xff]{2,}[a-z ]+/ig, "")
  3. WScript.Echo(s)
复制代码

作者: apang    时间: 2015-4-13 14:17

本帖最后由 apang 于 2015-4-14 09:22 编辑

单字总是位于每行开头的话,这样好了:
  1. @set @n=0;// & cscript -nologo -e:jscript "%~0"<a.txt>b.txt & pause & exit/b
  2. s = WScript.StdIn.ReadAll().replace(/((.).+?)(\2.+)?$/mg, "$1");
  3. WScript.Echo(s)
复制代码

作者: apang    时间: 2015-4-13 14:24

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.         set "s=%%a"
  5.         set "s1="
  6.         for %%b in (!s:~^,1!) do for %%c in ("!s:%%b=" "!") do (
  7.                 if not defined s1 set "s1=%%~c"
  8.         )
  9.         echo,!s:~,1!!s1!
  10. )
  11. pause
复制代码





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