【问题标题】:Powershell remove a range of lines from a text filePowershell 从文本文件中删除一系列行
【发布时间】:2018-12-14 19:02:53
【问题描述】:

我有一个包含这个的文本文件

REV#           CUST REV#                                    
BARREL. ADD SLIDE TO CAST THE 1.03 & .413
DIAMETERS TO REV G                               
PART #   LED-4506-X  REF. JOB#  13445   
SHIP:  COLL    SHIP TO ADDRESS: SEE PO
QUESTIONER: NO  Penalty:  NO  QTY: 1
DUE DATE: 12/28/18       
P.O. TOTAL AMOUNT $1.00     TERMS: N/30
QUOTE: WRITTEN PULLED: YES 
HOURS:  100     MATERIAL: 1,000.00     RATE:    82
TYPE: DIDI   FOREMAN:    MP    SALESPERSON: RO      
DETAILS:   YES  / ENG     GANTT CHART:      YES    

我需要删除SHIP之后的所有内容

我知道我可以用这样的方式删除每一行

(Get-Content C:\MyFile.txt) |
Where { $_ -notmatch "SHIP" } |
Where { $_ -notmatch "QUESTIONER:" } |
Where { $_ -notmatch "DUE DATE:" } |
Where { $_ -notmatch "P.O." }|
Where { $_ -notmatch "QUOTE:" }|
Where { $_ -notmatch "HOURS:" }|
Where { $_ -notmatch "TYPE:" }|
Where { $_ -notmatch "DETAILS:" }|
Set-Content C:\MyFile.txt

但偶尔我会有随机的数据行,我需要删除这些数据行并说这一行

REV#           CUST REV#                                    
BARREL. ADD SLIDE TO CAST THE 1.03 & .413
DIAMETERS TO REV G                               
PART #   LED-4506-X  REF. JOB#  13445   
SHIP:  COLL    SHIP TO ADDRESS: SEE PO
QUESTIONER: NO  Penalty:  NO  QTY: 1
DUE DATE: 12/28/18,
12/29/18,
12/30/18         
P.O. TOTAL AMOUNT $1.00     TERMS: N/30
QUOTE: WRITTEN PULLED: YES 
HOURS:  100     MATERIAL: 1,000.00     RATE:    82
SOME OTHER INFORMATION
TYPE: DIDI   FOREMAN:    MP    SALESPERSON: RO      
DETAILS:   YES  / ENG     GANTT CHART:      YES   

上面的代码无法捕捉到额外的日期或其他信息。如何处理从SHIP 一直到文件末尾的一系列行?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    尝试以下操作(确保备份 C:\MyFile.txt,因为您正在原地覆盖文件):

    ((Get-Content -Raw C:\MyFile.txt) -csplit '\r?\nSHIP:')[0] |
      Set-Content C:\MyFile.txt
    

    这会完整读取您的文件Get-Content -Raw,然后将生成的多行字符串拆分(-csplit,区分大小写)以SHIP:开头的行

    因此,结果数组的第一个元素 ([0]) 是文件的内容,直到 SHIP: 行,但不包括在内。

    【讨论】:

      【解决方案2】:

      如果你想要的内容总是在前 4 行,你可以这样做:

      (Get-Content C:\file.txt)[0..3] | set-content C:\outfile.txt
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 1970-01-01
        • 2017-01-28
        • 2016-05-15
        • 2013-05-13
        • 2015-12-21
        相关资源
        最近更新 更多