Board logo

标题: [文本处理] 求助批处理循环处理行的第一列输出对应的第二列 [打印本页]

作者: 572105002    时间: 2020-4-15 10:11     标题: 求助批处理循环处理行的第一列输出对应的第二列

文件名jobnamecheck.txt。
100034::0
100056::2
100047::4
100021::0

需求如下:以::做分割,批处理第一列,然后根据第一列的某个参数能输出对应的第二列的数据。麻烦大佬帮忙写个bat脚本我只会linux的。linux的命令是这样的:
  1. #!/bin/bash
  2. function check() {
  3.   status=(` cat /tmp/jobnamecheck.txt|grep "^$1::"|awk -F '::' '{print $2}'`)
  4.   printf "$status"
  5. }
  6. $1 $2
复制代码

作者: netdzb    时间: 2020-4-15 10:15

本帖最后由 netdzb 于 2020-4-15 10:17 编辑

回复 1# 572105002

好像是用for / 这样来搞的啊,代码我也学不出,但我能看懂。
你搜一下for的基本用法很快能找到答案。

分割符是 delimes =::,
不知道冒号需要转义吗?
作者: netdzb    时间: 2020-4-15 10:21

回复 1# 572105002

我顺路请教一下,grep "^$1::"怎么理解?谢谢。
作者: 572105002    时间: 2020-4-15 11:07

回复 3# netdzb


    这个就属于linux的正则了,grep ‘^$1::’ 就是以::做分隔符匹配出第一列,^的作用就是为了第一列的数字绝句匹配,这一行简单理解就是,以::做分隔符循环匹配第一列,输出对应的第二列
作者: went    时间: 2020-4-15 12:01

本帖最后由 went 于 2020-4-15 15:12 编辑

输入第一列,输出第二列这意思吗
  1. @echo off
  2. set /p "input=input:"
  3. for /f "tokens=1-2 delims=:" %%i in ('type "tes.txt"') do if "%%i"=="%input%" echo %%j && set "find=true"
  4. if not "%find%"=="true" echo %input% not found!
  5. pause&exit
复制代码

作者: netdzb    时间: 2020-4-15 12:27

回复 5# went

我就一直不明白for/f和for/r之间有什么区别?
作者: went    时间: 2020-4-15 12:37

回复 6# netdzb


    /r只能遍历文件,/f是万能的,哪个用着方便就用那个
作者: 572105002    时间: 2020-4-15 13:29

回复 5# went
大佬,能不能做成这样ceshi.bat 后面跟第一列的任意数据,就能输出对应的第二列数据。
示例
ceshi.bat 100056    输出2
作者: went    时间: 2020-4-15 13:48

本帖最后由 went 于 2020-4-15 15:11 编辑

如果没找到就不会有任何输出
  1. @echo off & for /f "usebackq tokens=1-2 delims=:" %%i in ("tes.txt") do if "%%i"=="%1" echo %%j
复制代码
回复 8# 572105002
作者: Batcher    时间: 2020-4-15 14:48

回复 9# went


delims=:: 没有实际发生作用吧
delims=: 这样就够了
作者: Batcher    时间: 2020-4-15 15:08

回复 3# netdzb


grep "^$1::" 意思是查找以某个字符串开头的行,效果类似于Windows的 findstr "^%1::"
作者: went    时间: 2020-4-15 15:11

回复 10# Batcher


    嗯没什么作用,多写了一个,已修改
作者: 572105002    时间: 2020-4-16 10:11

回复 12# went
大佬,我再多问一句,这个文件里的两列数据是不是分别用%%i、%%j表示的,求解答
作者: bailong360    时间: 2020-4-16 10:42

题外话:grep, gawk 这种工具也有 Windows 移植版(
作者: 572105002    时间: 2020-4-17 10:35

回复 14# bailong360

有是有,gawk我装好了,grep总是安装不好,环境变量不知道怎么配
作者: bailong360    时间: 2020-4-17 22:05

回复 15# 572105002

?直接到我签名的地址里下载完放到 PATH 中的目录里(比如 C:\Windows\System32 )就行了
或者和脚本放在同一目录下




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