Board logo

标题: [文本处理] [已解决]批处理怎样删除文本中的*星号? [打印本页]

作者: liht1024    时间: 2011-3-29 10:56     标题: [已解决]批处理怎样删除文本中的*星号?

本帖最后由 pcl_test 于 2016-9-13 15:56 编辑

我有许多文本文件,每一个文本文件中都有许多*号,想求一批处理,删除文本中的*号,并直接保存在原文件而不形成新文件,谢谢!
作者: Batcher    时间: 2011-3-29 14:35

  1. sed -i "s/\*//g" a.txt
复制代码

作者: liht1024    时间: 2011-3-29 16:03

谢谢Batcher,删除星号是没有问题,不过这个代码还有一个小缺点,就是把所有行也合并成了一行。谢谢!
作者: Batcher    时间: 2011-3-29 18:56

3# liht1024


我用的sed 4.1.4 + Vista SP2,没有任何问题。
作者: liht1024    时间: 2011-3-30 10:06

本帖最后由 liht1024 于 2011-3-30 10:08 编辑

谢谢Batcher,可能是我没说清楚,我是在sed4.0.7+xp sp3 下运行。我用10个文件(每个文件的内容为多行)试了一下,结果是每个文件中的星号删除了,但每个文件的内容都变成了一行。
作者: Batcher    时间: 2011-3-30 12:26

5# liht1024


换成4.1.4试试吧
http://bbs.bathome.net/thread-1114-1-1.html
作者: liht1024    时间: 2011-3-30 12:54

谢谢Batcher,用4.1.4就好了。
作者: pcl_test    时间: 2016-9-13 16:03

  1. //&cls&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     var line = WSH.StdIn.ReadLine();
  5.     var f = fso.OpenTextFile(line, 1);
  6.     var text = f.ReadAll().replace(/\*/g, '');
  7.     f.Close();
  8.     //覆盖写入源文件
  9.     fso.OpenTextFile(line, 2).Write(text);
  10. }
  11. WSH.echo('Done');
复制代码

作者: pcl_test    时间: 2016-9-13 16:14

本帖最后由 pcl_test 于 2016-9-13 16:17 编辑
  1. #*第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. #*&cls&dir /a-d/b *.txt|gawk -f "%~f0"&pause&exit
  3. BEGIN{
  4.     while(getline file>0){
  5.         s="";
  6.         while(getline<file>0){
  7.             gsub(/\*/,"");
  8.             s=s""$0"\n";
  9.         }
  10.         close(file);
  11.         printf s>file;
  12.     }
  13. }
  14. END{print "Done"}
复制代码





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