我想检查文本文件是否包含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"
}
}