24小时热门版块排行榜    

查看: 1820  |  回复: 12

mzlwait

木虫 (正式写手)

[求助] 数据批处理语言求教,急.......已有4人参与

我有许多数据TXT文件,我想从各个文件中寻找特定的数值,所有TXT文件中格式为:
11 22
33 44
55 66
77 88
.....
我想做的是利用批处理找出所有文档里面55后面的”66“这个数据,并以列的方式把“66”这个数据显示在新的TXT中。
求各位虫友帮忙,若如成功金币翻倍.谢谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

zeppe

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
假设你在linux环境下。
假设所需处理的txt文件都在当前目录下,且没有别的txt文件。
则可以用以下命令
ls *.txt | xargs awk '$1==55{print $2}' > after55.dat

ls *.txt | xargs sed -n 's/55 \(.*\)/\1/p' > after55.dat

希望对你有帮助。
4楼2015-08-28 09:14:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

【答案】应助回帖

假设你在windows环境下
假设所需处理的txt文件都在当前目录下,且都是你例子格式。
则可以写一个文件名为"test.bat",内容为
@echo off
for /r %%s in (*.txt) do (
  for /f "tokens=1,2" %%a in (%%s) do (
    if %%a==55 echo %%b >> after55.dat
  )
)
在命令行中转到当前目录,运行 test.bat 即可,结果在after55.dat中。

» 本帖已获得的红花(最新10朵)

5楼2015-08-28 10:03:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

jerkwin

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
你用sort把数据按第一列排序, 找到55的行就是了
再不行就用awk吧
2楼2015-08-27 21:13:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

matlab编程

禁虫 (小有名气)

感谢参与,应助指数 +1
本帖内容被屏蔽

3楼2015-08-27 23:56:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fivegod

新虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
在所有环境下,把数据重定向到excel里,然后查找或者排序,简单,完美

[ 发自手机版 http://muchong.com/3g ]
6楼2015-08-29 00:41:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mzlwait

木虫 (正式写手)

送红花一朵
引用回帖:
5楼: Originally posted by zeppe at 2015-08-28 10:03:26
假设你在windows环境下
假设所需处理的txt文件都在当前目录下,且都是你例子格式。
则可以写一个文件名为"test.bat",内容为
echo off
for /r %%s in (*.txt) do (
  for /f "tokens=1,2" ...

首先表示感谢,但是还有一个问题就是,出来的数据顺序不对,该怎么解决呢
7楼2015-08-29 15:27:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zeppe

金虫 (小有名气)

引用回帖:
7楼: Originally posted by mzlwait at 2015-08-29 15:27:19
首先表示感谢,但是还有一个问题就是,出来的数据顺序不对,该怎么解决呢...

顺序不对是指什么?你期望的输出是按什么顺序?
方便的话最好给出几个例子文件用于测试。
8楼2015-08-29 21:33:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xmclin

金虫 (正式写手)

引用回帖:
8楼: Originally posted by zeppe at 2015-08-29 21:33:57
顺序不对是指什么?你期望的输出是按什么顺序?
方便的话最好给出几个例子文件用于测试。...

他说的应该是因为文件名称排序引起的
比如,以数值命名,电脑在读文件的时候先读1.txt,然后是11.txt.而不是2.txt,我也经常遇到这个问题,不知有什么高招
9楼2015-08-29 23:48:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

潇湘书生

新虫 (初入文坛)

引用回帖:
9楼: Originally posted by xmclin at 2015-08-29 23:48:18
他说的应该是因为文件名称排序引起的
比如,以数值命名,电脑在读文件的时候先读1.txt,然后是11.txt.而不是2.txt,我也经常遇到这个问题,不知有什么高招...

这种数字的顺序也好搞啊,你认为定一个number,每次让电脑读入number.txt,然后number递增就行了嘛

处理这种有规则的文件,如果量不大,且规则明确,容易抽取的就用awk来做,如果内部逻辑判断很多,很烦,那就用python去写脚本,干这种文本处理的活,python最适合了,简单又容易上手
10楼2015-08-30 00:20:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mzlwait 的主题更新
信息提示
请填处理意见