Board logo

标题: [文本处理] [已解决]批处理BAT如何判断关键词所在列并删除所在行? [打印本页]

作者: lijiehao    时间: 2014-2-17 23:49     标题: [已解决]批处理BAT如何判断关键词所在列并删除所在行?

如附件,如何实现只判断“工作日期”这一列?目前判断是整一行中是否含有date.txt中的关键词
作者: battab    时间: 2014-2-18 11:14

本帖最后由 battab 于 2014-2-18 11:20 编辑

回复 1# lijiehao

试试这个可以吗?
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=0
  3. for /f "tokens=1-3" %%a in (bw.txt) do (
  4. set/a n+=1
  5. if "!n!"=="1" echo %%a %%b %%c
  6. for /f "tokens=*" %%i in (date.txt) do (
  7. if %%i==%%a echo %%a %%b %%c
  8. )
  9. )
  10. pause>nul
复制代码
这个筛选出有关键词的行
作者: battab    时间: 2014-2-18 11:38

本帖最后由 battab 于 2014-2-18 12:52 编辑

回复 1# lijiehao


    这个应该可以满足要求:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3" %%a in (bw.txt) do (
  3. for /f "tokens=*" %%i in (date.txt) do (
  4. if %%i neq %%a echo %%a %%b %%c >>bw_new.txt
  5. )
  6. )
  7. pause>nul
复制代码

作者: lijiehao    时间: 2014-2-18 12:45

回复 3# battab


    非常感谢,目前测试确实可以了
作者: Batcher    时间: 2014-2-18 13:01

回复 3# battab


没有必要在二层for循环里面重复的读取date.txt
一次就够了
  1. @echo off
  2. set /p str=<date.txt
  3. (for /f "tokens=1-3" %%a in (bw.txt) do (
  4.     if %str% neq %%a echo %%a %%b %%c
  5. ))>bw_new.txt
复制代码

作者: Batcher    时间: 2014-2-18 13:03

  1. gawk "NR==FNR{str=$0}NR>FNR{if($1!=str)print}" date.txt bw.txt > bw_new.txt
复制代码

作者: zhanglei1371    时间: 2014-2-18 13:18

回复 5# Batcher


    如果date里不止一行的话,这个还行吗?
作者: DAIC    时间: 2014-2-18 13:40

回复 7# zhanglei1371


    set /p 只能获取第一行
作者: lijiehao    时间: 2014-2-18 17:03

本帖最后由 lijiehao 于 2014-2-18 17:05 编辑

回复 5# Batcher


    谢谢大神多次的帮助!现在date里面只有一个日期,如果有多个日期存在呢?如

20140218
2014.02.18
20140219
2014.02.19
......
20140225
2014.02.25

此外,为什么只能支持前面3列,如果后面还有几列呢?

惭愧,水平太差,只是为了提高工作效率,不停搜索,不停修改人家的代码
作者: Batcher    时间: 2014-2-18 17:06

回复 9# lijiehao


    2楼和3楼的代码都不行是吗?
作者: lijiehao    时间: 2014-2-18 17:38

回复 10# Batcher


    只支持前三列,第4列以后的全都没办法输出
作者: Batcher    时间: 2014-2-18 18:04

回复 11# lijiehao


    把代码里面的 1-3 改成 1-2*
作者: lijiehao    时间: 2014-2-25 09:01

回复 12# Batcher


    非常感谢!
作者: Batcher    时间: 2014-2-25 09:48

回复 13# lijiehao


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。




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