Board logo

标题: [文本处理] [已解决]批处如何实现过滤指定位置字符? [打印本页]

作者: xuexilai    时间: 2011-5-15 14:52     标题: [已解决]批处如何实现过滤指定位置字符?

本帖最后由 xuexilai 于 2011-5-15 15:12 编辑

请教各位哥哥姐姐们这个批处代码应该怎么写 小弟在此谢过了


1.txt内容如下:
1622928524----uuuuuuuuuuu---fghthyt----ty46hhhhh
1625767993----55555555555----yhjjyjytj----hhhhhhhhhhh  
1635570584----4ggggggggg----vvvvvvvvvvv----re545555555
1693323163----ssssddddddd----eeeeeeeeeeeee----ju777777779

运行批处过滤后的结果 保存为2.txt

2.txt内容如下:

1622928524----uuuuuuuuuuu
1625767993----55555555555
1635570584----4ggggggggg
1693323163----ssssddddddd
作者: Commander    时间: 2011-5-15 15:05

  1. @echo off
  2. (for /f "tokens=1-2 delims=-" %%a in (1.txt) do (
  3.     echo %%a----%%b
  4. ))>2.txt
复制代码

作者: weichenxiehou    时间: 2011-5-15 15:06

  1. @echo off
  2. (for /f "tokens=1,2 delims=-" %%a in (1.txt) do echo,%%a----%%b)>2.txt
复制代码

作者: Batcher    时间: 2011-5-15 15:11

如果列分隔符是固定的:
  1. gawk "BEGIN{FS=OFS=\"----\"}{print $1,$2}" 1.txt | more >2.txt
复制代码

作者: xuexilai    时间: 2011-5-15 15:11

谢谢2位哥哥
作者: Batcher    时间: 2011-5-15 15:13

换个思路:
  1. sed "s/\(^[^-]\+----[^-]\+\).*/\1/g" 1.txt | more >2.txt
复制代码

作者: xuexilai    时间: 2011-5-15 15:13

谢谢管理loveliness:loveliness:
作者: Hello123World    时间: 2011-5-17 17:09

本帖最后由 Hello123World 于 2011-5-18 16:28 编辑
  1. @echo off
  2. for /f "delims=- tokens=1,2" %%i in (test.txt) do echo %%i----%%j>>2.txt
  3. pause>nul
复制代码

作者: namejm    时间: 2011-5-17 17:37

楼上的童鞋,delims=只能以单个的字符作为分隔,并不能以一个字符串作为分隔,delims=---这样的描述是错误的——虽然结果正确,但是你对delims=的理解还没有到位。
作者: Hello123World    时间: 2011-5-18 16:34

恩,确实没理解透彻。
delims是以单个字符为切分符,多个切分符间没有类容,就把这多个切分符当做一个切分符。




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