标题: [文本处理] 求助批处理循环处理行的第一列输出对应的第二列 [打印本页]
作者: 572105002 时间: 2020-4-15 10:11 标题: 求助批处理循环处理行的第一列输出对应的第二列
文件名jobnamecheck.txt。
100034::0
100056::2
100047::4
100021::0
需求如下:以::做分割,批处理第一列,然后根据第一列的某个参数能输出对应的第二列的数据。麻烦大佬帮忙写个bat脚本我只会linux的。linux的命令是这样的:- #!/bin/bash
- function check() {
- status=(` cat /tmp/jobnamecheck.txt|grep "^$1::"|awk -F '::' '{print $2}'`)
- printf "$status"
- }
- $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 编辑
输入第一列,输出第二列这意思吗- @echo off
- set /p "input=input:"
- for /f "tokens=1-2 delims=:" %%i in ('type "tes.txt"') do if "%%i"=="%input%" echo %%j && set "find=true"
- if not "%find%"=="true" echo %input% not found!
- 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 编辑
如果没找到就不会有任何输出- @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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |