找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15710|回复: 7

[已解决]用SED快速提取指定分隔符间的字段

[复制链接]
发表于 2015-3-28 19:21:47 | 显示全部楼层 |阅读模式
本帖最后由 userwww 于 2015-3-28 23:14 编辑

有一文本50M,几十万行,如何能快速提取出分隔符|第一及第二段的内容,可用sed等工具,谢谢
"c:\AILog.txt"|0|130691370615909692|130687957107313120|32
"c:\autoexec.bat"|24|128891437401258876|128920106441575908|32
...

结果
"c:\AILog.txt"|0
"c:\autoexec.bat"|24
...

问题已解决,谢谢各位,不知道只能评一次分,后面的各位不好意思了,再次感谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2

查看全部评分

发表于 2015-3-28 19:47:54 | 显示全部楼层
回复 1# userwww
纯批也不会太慢吧
  1. @echo off
  2. (for /f "tokens=1,2* delims=|" %%a in (test.txt) do echo,%%a^|%%b)>a.txt
  3. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
userwww + 1 热心助人

查看全部评分

发表于 2015-3-28 20:34:55 | 显示全部楼层
本帖最后由 bailong360 于 2015-3-28 20:43 编辑

50M还真不好说...gawk的,话说写到一行总是出错...
  1. #&Gawk -F "|" -f %0 a.txt&Exit
  2. {print $1"|"$2>"b.txt"}
复制代码
grep的
  1. @Grep -oP "".*"\|[0-9]+" a.txt >b.txt
复制代码
发表于 2015-3-28 21:39:17 | 显示全部楼层
回复 3# bailong360


这样就行了
  1. gawk -F "|" "{print $1 FS $2}" 1.txt > 2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
bailong360 + 1 惊现Batcher

查看全部评分

发表于 2015-3-28 21:43:37 | 显示全部楼层
  1. sed "s/^\([^|]\+|[^|]\+\).*/\1/" 1.txt > 2.txt
复制代码
发表于 2015-3-28 22:01:59 | 显示全部楼层
回复 4# Batcher


    受教了,原来FS可以这样用
 楼主| 发表于 2015-3-28 22:38:35 | 显示全部楼层
本帖最后由 userwww 于 2015-3-28 22:40 编辑

非常感谢楼上的各位!
这是我的P,用时是65秒
  1. cd.>2.txt
  2. for /f "tokens=1,2 delims=|" %%i in (1.txt) do (
  3. echo %%i^|%%j>>2.txt
  4. )
复制代码
二楼的P,用时是5秒多
@echo off
  1. (for /f "tokens=1,2* delims=|" %%a in (test.txt) do echo,%%a^|%%b)>a.txt
  2. pause
复制代码
四楼管理员的awk是2秒多
  1. gawk -F "|" "{print $1 FS $2}" 1.txt > 2.txt
复制代码
五楼的SED是3秒多
  1. sed "s/^\([^|]\+|[^|]\+\).*/\1/" 1.txt > 2.txt
复制代码
因本机上没有GREP,就没测到它的速度,为什么我的P会慢那么多呢?
发表于 2015-3-28 22:43:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:12 , Processed in 0.018899 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表