[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
...

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

评分人数

回复 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

评分人数

TOP

本帖最后由 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
复制代码

TOP

回复 3# bailong360


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

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. sed "s/^\([^|]\+|[^|]\+\).*/\1/" 1.txt > 2.txt
复制代码

TOP

回复 4# Batcher


    受教了,原来FS可以这样用

TOP

本帖最后由 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会慢那么多呢?

TOP

TOP

返回列表