标题: [文本处理] [已解决]批处理如何提取文本中指定两个列的数字大小之差小于指定数值的行 [打印本页]
作者: pdanniel66 时间: 2013-8-28 04:22 标题: [已解决]批处理如何提取文本中指定两个列的数字大小之差小于指定数值的行
本帖最后由 pcl_test 于 2016-8-6 09:30 编辑
BAT如何計算文本內欄位數大小差異若小於10則輸出該行?
請問有以下文本 quota.txt,以第一行aaa為例,想列出第4個欄位值減第3個欄位值 , 即4000000-102504 若小於10, 或是第7個欄位值減第6個欄位值,即 5000-1 若小於10,
以上2者其中一個成立就將該行寫入 exceed_quota.txt 文本檔,謝謝 !
quota.txt文本
aaa -- 102504 4000000 5000000 1 5000 10000
bbb -- 3999999 4000000 5000000 4 5000 10000
ccccc -- 41631210 50000000 50001000 50001 50000 50010
dddd -- 0 5000000 5900000 0 5000 5100
eeeeeee -- 7899399 20000000 20001000 3837 15000 15100
fff -- 0 1000 1024 0 5000 10000
ggggggggg -- 3388543 5000000 5001000 34999 35000 35100
hh -- 17305 5000000 5001000 2 5000 5100
iiiiii -- 804513 20000000 20001000 0 10000 11000
jjj -- 4000003 4000000 5000000 41 5000 10000
kkk -- 0 5000000 5001000 0 5000 5100
輸出結果應該如下所示
bbb -- 3999999 4000000 5000000 4 5000 10000
ccccc -- 41631210 50000000 50001000 50001 50000 50010
ggggggggg -- 3388543 5000000 5001000 34999 35000 35100
jjj -- 4000003 4000000 5000000 41 5000 10000
[attach]6714[/attach]
作者: pdanniel66 时间: 2013-8-28 04:30
本帖最后由 pdanniel66 于 2013-8-28 07:32 编辑
只寫到以下內容,就卡住了 ,請協助 , Thanks.- @echo off
- set v1=10
- for /f "tokens=1-8 delims= " %%i in (quota.txt) do (
- set /a diff1=%%l-%%k& set /a diff2=%%o-%%n
- if !diff1! lss !v1! (
- echo !diff1! >> exceed_quota.txt
- )
- else
- ...............
- )
- pause
复制代码
作者: Batcher 时间: 2013-8-28 11:23
- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1-7*" %%a in (quota.txt) do (
- set /a m=%%d-%%c
- if !m! lss 10 (
- echo %%a %%b %%c %%d %%e %%f %%g %%h
- ) else (
- set /a n=%%g-%%f
- if !n! lss 10 (
- echo %%a %%b %%c %%d %%e %%f %%g %%h
- )
- )
- ))>exceed_quota.txt
复制代码
作者: pdanniel66 时间: 2013-8-29 05:27
謝謝Batcher !
作者: pcl_test 时间: 2016-8-6 09:30
第三方- gawk "$4-$3<10||$7-$6<10" "quota.txt">"result.txt"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |