返回列表 发帖

[文本处理] 批处理如何删除文本中以指定字符分割成两列的第二列内容为纯数字/纯字母的行

本帖最后由 pcl_test 于 2017-1-14 02:21 编辑

批处理如何批量删除纯数字所在的行数?
jhfgudeli|wodima123
jhfgudeli|jhfgudeli
jhfgudeli|7204381
jest1314527|1314527
jeffnomms|fanzhe128
jaychen3326|wfd901215
jaychen3326|123456
jasonlouhao|jasonlouhao
jasonlouhao|asd138
jasonlee123|jasonlee123
jasonlee123|19880918
jasonlee123|123123
jaskjay|63619063qwCOPY
目前数据是这样,想把“|”右侧数据是纯数字的内容都删除,留下字母+数字的内容,“|”前面的内容不管

结果是:
jhfgudeli|wodima123
jhfgudeli|jhfgudeli
jeffnomms|fanzhe128
jaychen3326|wfd901215
jasonlouhao|jasonlouhao
jasonlouhao|asd138
jasonlee123|jasonlee123
jasonlee123|19880918
jaskjay|63619063qwCOPY
================================经过一楼的回复,已经实现了想要的效果。确实非常棒

请教,如何删除纯数字和纯字母呢,因为我只想要字母+数字的内容

@echo off
for /f "tokens=1-2 delims=|" %%a in (test.txt) do (
  for /f "delims=0123456789" %%c in ("#%%b") do if not "%%c"=="#" echo.%%a^|%%b
)
pauseCOPY
1

评分人数

    • Rasm: 怎么输出到新文本,因为数据比较多技术 + 1

TOP

回复 1# Rasm
样本和说明真烂
for /f "tokens=1,* delims=|" %%i in ('type "1.txt"') do (
set "#=%%j"
for /l %%n in (0,1,9)do set "#=%%n!#!"
for /l %%n in (0,1,9)do set "#=!#:%%~n=!"
if defined # echo,%%j
)COPY
1

评分人数

    • Rasm: 这么直观了,哈哈技术 + 1
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 3# /zhqsystem/zhq


    你的代码根本没测试就发出来了吧

TOP

回复 4# WHY


    没有效果

TOP

回复 5# GNU
醉了,我测试了只是少写了个空格检测和变量延迟只写主要的东西更直观,不过不测试也能正常通过,经常忘标点少打个字符比较常见
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 7# /zhqsystem/zhq


    真能搞笑,自己试试吧,代码肯定不对。

TOP

回复 2# flyinnet9


    已经成功导出到新文本,

请教,如何删除纯数字和纯字母呢,因为我只想要字母+数字的内容

TOP

回复 9# Rasm
@echo off
(for /f "tokens=1-2 delims=|" %%a in (a.txt) do (
  for /f "delims=0123456789" %%c in ("#%%b") do if not "%%c"=="#" if not "%%c"=="#%%b" echo.%%a^|%%b
))>result.txt
pauseCOPY

TOP

回复 9# Rasm
导出来少了一行。
第13行应该是要的吧?

TOP

findstr /v "[^|0-9 ][0-9]* *$" a.txtCOPY

TOP

:On Error Resume Next
:set fso=CreateObject("scripting.filesystemobject")
:Sub class_bat
echo off&cls
cscript -nologo -e:vbs "%0"
pause
Exit Sub
:End Sub
set RegExp=new RegExp
RegExp.IgnoreCase=-1:RegExp.Global=-1:regexp.multiline=-1
file="a.txt"
RegExp.Pattern=".*\|([^a-z]*|[^0-9]*)$"
var=fso.opentextfile(file).readall
var=RegExp.Replace (var,"")
RegExp.Pattern="^.*[^\n]$"
set matches=regexp.execute(var)
for each match in matches
result=result&match&vbcrlf
next
result=left(result,len(result)-2)
fso.createtextfile("new.txt").write result
wsh.echo resultCOPY

TOP

回复 10# flyinnet9


    转换下,一样的,文本,如果是 | 右边只保留纯数字呢,该怎么修改代码

TOP

本帖最后由 flyinnet9 于 2017-1-13 10:34 编辑

有字符的另算
纯数字
findstr "|[0-9]*$" a.txt
纯字母
findstr "|[^0-9]*$" a.txt
非纯数字
findstr /v "|[0-9]*$" a.txt
非纯字母
findstr /v "|[^0-9]*$" a.txt
数字和字母
findstr /v "|[0-9]*.$" a.txt |findstr /v "|[^0-9]*.$"COPY

TOP

回复 1# Rasm

老旧DZ 齿问题了
删除|右边数字列
cat a
jhfgudeli|wodima123
jhfgudeli|jhfgudeli
jhfgudeli|7204381
jest1314527|1314527
jeffnomms|fanzhe128
jaychen3326|wfd901215
jaychen3326|123456
jasonlouhao|jasonlouhao
jasonlouhao|asd138
jasonlee123|jasonlee123
jasonlee123|19880918
jasonlee123|123123
jaskjay|63619063qw
awk -F "|" '$2!~ /^[0-9]+$/'  a
应得结果
jhfgudeli|wodima123
jhfgudeli|jhfgudeli
jeffnomms|fanzhe128
jaychen3326|wfd901215
jasonlouhao|jasonlouhao
jasonlouhao|asd138
jasonlee123|jasonlee123
jaskjay|63619063qw

TOP

返回列表