Board logo

标题: [文本处理] 批处理如何删除文本每行前几个字符? [打印本页]

作者: wuzu007    时间: 2010-7-14 22:58     标题: 批处理如何删除文本每行前几个字符?

本帖最后由 pcl_test 于 2016-7-28 17:19 编辑

例如
a.txt 文本里面的内容:
"0001    baidu.com"
"0002    kaixin001.com"
"0003    1234.com"
要处理的是,只要提取baidu.com 把带数字和冒号过滤掉,并且把之前的0001,0002也过滤掉。文本的内容最后是baidu.com。
作者: sgaizxt001    时间: 2010-7-14 23:43

中间的是空格还是TAB?
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3. for /f "tokens=2 delims= " %%b in (%%a) do echo %%b
  4. )
  5. pause
复制代码

作者: wuzu007    时间: 2010-7-15 09:53

原帖由 sgaizxt001 于 2010-7-14 23:43 发表
中间的是空格还是TAB?@echo off
for /f "delims=" %%a in (a.txt) do (
for /f "tokens=2 delims= " %%b in (%%a) do echo %%b
)
pause

中间的是空格哦
作者: canyuexiaolang    时间: 2010-7-15 11:06

在批处理for里面,空格早就被和谐了...
我觉得2楼代码不必那么麻烦、
  1. for /f "tokens=1,2" %%i in (a.txt) do echo %%j>>b.txt
复制代码
足够了...
作者: canyuexiaolang    时间: 2010-7-15 11:07

等等。。楼主只要baidu.com吗?
作者: hfg1977    时间: 2010-7-15 15:09

只要baidu.com
type a.txt|grep -o "[^0-9][a-zA-Z]*.com"
保留 xxxx.com
type a.txt|grep -o "[0-9a-zA-Z]*.com"

正在学习 GREP呵呵
作者: wuzu007    时间: 2010-7-15 21:17

感谢批处理群网名叫风魔的兄弟,我把最终的代码发来吧。
  1. @echo off&setlocal enabledelayedexpansion
  2. echo.>b.txt
  3. for /f "tokens=1,* delims= " %%a in (a.txt) do (
  4. set X=%%b
  5. echo !X:~,-1! >>b.txt
  6. )
  7. FINDSTR /c:".com" b.txt >c.txt
  8. pause
复制代码

作者: defanive    时间: 2010-7-15 22:08

  1. @echo off
  2. for /f "tokens=2" %%a in (a.txt) do (
  3. set "str=%%a
  4. call echo %%str%%
  5. )
复制代码
实在不明白楼主想要什么,带数字的1234.com这些要不要?
作者: CUer    时间: 2010-7-15 23:02

  1. grep -o "[a-zA-Z0-9]\+\.com" 1.txt >2.txt
复制代码

作者: CUer    时间: 2010-7-15 23:04

  1. gawk -F "[\" ]+"  "{print $3}" 1.txt >2.txt
复制代码

作者: CUer    时间: 2010-7-15 23:06

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

作者: CUer    时间: 2010-7-15 23:10

  1. gawk "{gsub(/\"$/,\"\");print $2}" 1.txt >2.txt
复制代码

作者: asnahu    时间: 2010-9-12 00:24

  1. gawk "BEGIN{FS=\"[ \x22]\"}{print $6}" urfile
复制代码





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