Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-UNIX ANSI文件编码正在更改并正在运行CRLF_Unix_Powershell_Encoding_Newline - Fatal编程技术网

Powershell-UNIX ANSI文件编码正在更改并正在运行CRLF

Powershell-UNIX ANSI文件编码正在更改并正在运行CRLF,unix,powershell,encoding,newline,Unix,Powershell,Encoding,Newline,我正在windows中使用Powershell将Unix中生成的文件中的“£”替换为“$”。问题是输出文件在每行末尾都有CRLF,而不是它原来的LF。当我在Notepad++中查看原始文件时,状态栏告诉我它是Unix ANSI,我希望保留此格式,并在每行的末尾使用LF。 我尝试了所有的编码选项,但没有成功,我还尝试了设置内容,而不是输出文件。我的代码是: $old = '£' $new = '$' $encoding = 'UTF8' (Get-Content $fileInfo.FullNam

我正在windows中使用Powershell将Unix中生成的文件中的“£”替换为“$”。问题是输出文件在每行末尾都有CRLF,而不是它原来的LF。当我在Notepad++中查看原始文件时,状态栏告诉我它是Unix ANSI,我希望保留此格式,并在每行的末尾使用LF。 我尝试了所有的编码选项,但没有成功,我还尝试了设置内容,而不是输出文件。我的代码是:

$old = '£'
$new = '$'
$encoding = 'UTF8'
(Get-Content $fileInfo.FullName) | % {$_ -replace $old, $new} | Out-File -filepath $fileInfo.FullName -Encoding $encoding
谢谢你的帮助
Jamie

@Keith Hill为此
转换为Unixlineding
制作了一个cmdlet。你可以在中找到它。我意识到这是一个非常古老的问题,但当我遇到类似的问题时,我偶然发现了它,并认为我会分享对我有用的东西。这可能会在将来帮助其他编码人员,而无需使用第三方cmdlet

读取Unix格式文件(即使用LF行终止符而不是CRLF Windows样式的行终止符)时,只需在获取内容命令的文件名后使用-Raw参数,然后以字符串的编码类型输出即可,虽然UTF8编码的结果字符串可能与我的要求相同

我遇到问题的具体命令是读取模板文件,替换一些变量,然后输出到新文件。最初的模板是Unix风格的,但是在添加-Raw参数之前,输出是Windows风格的,如下所示。请注意,这是我从批处理文件中调用的powershell命令,因此其格式是正确的

powershell -Command "get-content master.template -Raw | %%{$_ -replace \"@MASTERIP@\",\"%MASTERIP%\"} | %%{$_ -replace \"@SLAVEIP@\",\"%SLAVEIP%\"} | set-content %MYFILENAME%-%MASTERIP%.cfg -Encoding STRING"

我使用记事本++检查生成文件的格式,这在我的案例中起到了作用。

相关:欢迎您,如果有帮助,请记住将帖子标记为已回答。