使用Powershell在文件中查找CRLF

时间:2018-10-07 10:16:57

标签: powershell

我想检查文本文件是否包含unix样式行结尾(LF)或Windows样式行结尾(CR LF)。如您所知,Add-Content追加了结尾的CRLF,这是不希望的。 我的问题是:第一个条件是:如果文本文件包含CRLF(Windows风格)行结尾和/或仅LF(Unix风格),所以最后一行具有cr / lf,那么它将不会在脚本中添加新行。

第二个条件是:如果不包含的文本文件包含CRLF(Windows风格)行尾和/或仅LF(Unix风格),则它将在文件末尾插入一个额外的CR / LF,如下所示。因此,在文件末尾添加了一行新行,并在其末尾添加了cr / lf。

顺便说一句,我正在使用Powershell v4。

1-例如:第一个条件是:

jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF

添加Windows行尾后:

jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=TESTTEXT CRLF

2-例如:第二个条件是:

在添加最后一行之前,没有cr / lf:

jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER

添加Windows行尾后:

jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=SQLSERVER CRLF
jdbc/PIKYDNC=TESTTEXT CRLF

这是我的代码:

$get_source = get-content "C:\Deneme\test-source.txt"
$get_source | foreach {
    if ($_ -eq $get_source[0]){ #To start on a new line at the beginning of the import
        add-content -Value "`n$_" -path "C:\Deneme\test-dest.txt"
        add-content -Value "`n$_" -path "C:\Deneme\test-dest3.txt"
        $cnt = $get_source[0]
        $cnt1 = $cnt.split('=')[1]
        $cnt2 = $cnt1 + "=SQLSERVER"
        add-content -Value "$cnt2" -path "C:\Deneme\test-dest4.txt"
    }
    else{
        Add-Content -Value "`n$_" -Path "C:\Deneme\test-dest2.txt"
    }
}

0 个答案:

没有答案