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

[文本处理] 批处理如何判断并提取文本文件里每行第一个字符包含多个关键词的整行?

本帖最后由 wh123wh123 于 2023-2-24 00:01 编辑

批处理如何判断并提取A文本文件里每行第一个字符是“7”或“8”或“4”多个关键词的整行并输出到另外一个B文本文件里?例如A文本文件内容:
9011509        对方方法        69.28        26181982        1.298        -4.641        -2.354        205        25.851        61.33        113.58        85.195                        -36.788
771152        观后感        50.57        56320912        1.64        -3.689        0.938        117        35.215        46.9        82        -74.84                        -36.076
50788        韩国1        12.99        25577026        0.92        -2.747        1.962        498        51.223        11.1        21.07        -89.82                        -35.693
488253        队附近        24.94        28048504        2.306        -6.206        2.634        139        54.149        20.71        40.44        95.268                        -35.221
83687        陶然亭        5.1        362950        1.559        -4.348        -1.544        143        9.337        4.86        9.2        -89.3                        -35.032                0.329
693233        而额        14.96        7770203        1.471        -2.508        0.403        105        35.223        13.28        24.92        -87.651                        -34.957
89445        一条鱼        8.83        299553        1.345        -2.831        -2.539        155        7.299        8.37        15.87        -89.606                        -34.252                0.184
只提取后的例子:只提取第一字符包含关键词“7、8、4”的整行,B文本文件结果例子:
771152        观后感        50.57        56320912        1.64        -3.689        0.938        117        35.215        46.9        82        -74.84                        -36.076
488253        队附近        24.94        28048504        2.306        -6.206        2.634        139        54.149        20.71        40.44        95.268                        -35.221
83687        陶然亭        5.1        362950        1.559        -4.348        -1.544        143        9.337        4.86        9.2        -89.3                        -35.032                0.329
89445        一条鱼        8.83        299553        1.345        -2.831        -2.539        155        7.299        8.37        15.87        -89.606                        -34.252                0.184
求完整批处理代码

本帖最后由 77七 于 2023-2-24 00:26 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('type "A.txt"') do (
  3.         set "str=%%a"
  4.         setlocal enabledelayedexpansion
  5.         echo !str:~0,1! | findstr /r "7 8 4" 1>nul 2>nul && (
  6.                 >>B.txt echo !str!
  7.         )
  8.         endlocal
  9. )
  10. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 wh123wh123 于 2023-2-24 00:12 编辑

回复 2# 77七
感谢老师帮助,测试后发现不够精确,只需要判断每行的第一个字符或数字是“7或8或4”,不是判断第一组或第一列内容包含关键词,是第一个字符或数字是不是7或8或4

TOP

本帖最后由 77七 于 2023-2-24 00:19 编辑

回复 3# wh123wh123
我理解错了,已修改水平有限,修改了几次...
bat小白,请多指教!谢谢!

TOP

回复 4# 77七


感谢老师帮助,如果按开头字符关键词是否“7、8、48”的整行,B文本文件结果例子: 这样的话如何修改完善一下代码?
771152        观后感        50.57        56320912        1.64        -3.689        0.938        117        35.215        46.9        82        -74.84                        -36.076
488253        队附近        24.94        28048504        2.306        -6.206        2.634        139        54.149        20.71        40.44        95.268                        -35.221
83687        陶然亭        5.1        362950        1.559        -4.348        -1.544        143        9.337        4.86        9.2        -89.3                        -35.032                0.329
89445        一条鱼        8.83        299553        1.345        -2.831        -2.539        155        7.299        8.37        15.87        -89.606                        -34.252                0.184

TOP

回复 5# wh123wh123


  
  1. @echo off
  2. for /f "delims=" %%a in ('type "A.txt"') do (
  3.         set "str=%%a"
  4.         setlocal enabledelayedexpansion
  5.         echo !str:~0,1! | findstr /r "7 8" 1>nul 2>nul && (
  6.                 >>B.txt echo !str!
  7.         )
  8.         if "!str:~0,2!" equ "48" (
  9.                 >>B.txt echo !str!
  10.         )
  11.         endlocal
  12. )
  13. pause
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 77七 于 2023-2-24 00:43 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('type "A.txt"') do (
  3.         set "str=%%a"
  4.         setlocal enabledelayedexpansion
  5.         echo !str! | findstr "^7 ^8 ^48" 1>nul 2>nul && (
  6.                 >>B.txt echo !str!
  7.         )
  8.         endlocal
  9. )
  10. pause
复制代码

这样应该也行,正则表达式我不太会用
  1. @echo off
  2. for /f "delims=" %%a in ('type "A.txt" ^| findstr "^7 ^8 ^48"') do (
  3.         >>B.txt echo %%a
  4. )
  5. pause
复制代码
1

评分人数

    • wh123wh123: 非常感谢老师成功帮助,谢谢了技术 + 1
bat小白,请多指教!谢谢!

TOP

回复 7# 77七
用for好像多此一举,直接:
  1. findstr /b "7 8 48" A.txt>B.txt
复制代码
2

评分人数

    • 77七: 谢谢指点!技术 + 1
    • wh123wh123: 也有效果,谢谢老师帮助技术 + 1

TOP

返回列表