如何编写脚本只搜索文本中的第一行和最后一行并删除" - "从那里?

时间:2013-01-17 15:02:00

标签: vbscript

我在某些文件夹中有超过5k个文本文件。现在我只需要从每个文本文件的第一行和最后一行删除"-"

我不知道怎么做,是否有人可以提供帮助?我该怎么用呢? vbs或普通批次

操作系统:Windows7

文本文件如下:01.txt


% 01-A247M15 G70 

N0001 G30 G17 X-100 Y-100 Z0

N0002 G31 G90 X100 Y100 Z45

N0003 ; --PART NO.:  NC-HON.PHX01.COVER-SHOE.DET-1000.050

N0004 ; --TOOL:  8.55 X .3937 

N0005 D00 Q50 P01 +8.5500 ; TOOL DIA 

N0006 D00 Q51 P01 +0.3920 ; TOOL RAD 

N0007  % 01-A247M15 G70 

请帮忙。

3 个答案:

答案 0 :(得分:0)

你还没有说明你想要哪个脚本perl,unix。所以我会给你算法,

1.  read first line
2.  Split with - as delimiter (cut in unix)
3.  paste the split words in redirect to new file >> newfile
4.  get count of lines of file (wc in unix)
5.  get the 2nd line till last one but line and append to new file (head and tail in unix)
6.  do the same steps 1, 2, and 3 for last line and append to new file

答案 1 :(得分:0)

使用VBScript更简单......

首先,您将文本文件解析为数组:http://www.windowsitpro.com/content/content/46489/Listing_01.txt

Function FileToArray(ByVal strFile, ByVal blnUNICODE)
  Const FOR_READING = 1
  Dim objFSO, objTS, strContents

' BEGIN CALLOUT A
  FileToArray = Split("")
' END CALLOUT A

  Set objFSO = CreateObject("Scripting.FileSystemObject")

  If objFSO.FileExists(strFile) Then
    On Error Resume Next
    Set objTS = objFSO.OpenTextFile(strFile, FOR_READING, False, blnUNICODE)
    If Err = 0 Then
      strContents = objTS.ReadAll
      objTS.Close
' BEGIN CALLOUT B
      FileToArray = Split(strContents, vbNewLine)
' END CALLOUT B
    End If
  End If
End Function

然后对数组的第一行和最后一行执行REPLACE并将其写入另一个文件或同一文件。

答案 2 :(得分:0)

如果您可以访问类似Linux / Linux的环境(MinGW,Cygwin等),则可以使用以下一个内衬

    find ./ -name *.txt | xargs sed -i '1s/-//g'
    find ./ -name *.txt | xargs sed -i '$s/-//g'

编辑在最后一行包括替换:)