如何在PowerShell中连接两个文本文件?
我试图在Unix中复制“cat”命令的function。
我想避免解决scheme,我明确地将两个文件读入variables,连接variables,然后写出连接的variables。
你可以简单地使用cat example1.txt, example2.txt | sc examples.txt
cat example1.txt, example2.txt | sc examples.txt
。 你也可以用这种风格连接两个以上的文件。 另外,如果文件命名相似,则可以使用:
cat example*.txt | sc allexamples.txt
cat
是Get-Content
的别名, sc
是Set-Content
的别名。
注意1 :小心后一种方法 – 如果你尝试输出到examples.txt
(或类似的匹配模式),PowerShell将进入一个无限循环! (我刚刚testing过)。
注2 :使用>
输出到文件不保留字符编码! 这就是为什么使用Set-Content
( sc
)的原因。
不要使用cat
… >
; 它弄乱了字符编码。 使用:
Get-Content files.* | Set-Content newfile.file
花了几个小时才发现这一点。
您可以使用Add-Content cmdlet。 也许这比其他解决scheme快一点,因为我不检索第一个文件的内容。
gc .\file2.txt| Add-Content -Path .\file1.txt
在cmd
,你可以这样做:
copy one.txt+two.txt+three.txt four.txt
在PowerShell中,这将是:
cmd /c copy one.txt+two.txt+three.txt four.txt
虽然PowerShell的方式是使用gc ,但是上面的速度会非常快,特别是对于大文件。 它也可以在非ASCII文件上使用/B
开关。
我用了:
Get-Content c:\FileToAppend_*.log | Out-File -FilePath C:\DestinationFile.log -Encoding ASCII -Append
这附加罚款。 我添加了ASCII编码来清除记事本++显示的nul字符,而不显示编码。
你可以做一些事情:
get-content input_file1 > output_file get-content input_file2 >> output_file
其中>
是“out-file”的别名,而>>是“out-file -append”的别名。
由于大多数其他答复经常得到格式错误(由于pipe道),最安全的事情如下:
add-content $YourMasterFile -value (get-content $SomeAdditionalFile)
我知道你想避免将$ SomeAdditionalFile的内容读入一个variables,但为了保存例如你的新行格式,我不认为有没有正确的方法来做到这一点。
解决方法是逐行循环遍历$ SomeAdditionalFile,并将它们传递到$ YourMasterFile中。 然而,这是过度的资源密集型。
在命令提示符下连接文件就是了
type file1.txt file2.txt file3.txt > files.txt
Powershell将types命令转换为Get-Content,这意味着在powershell中使用type命令时会出现错误,因为Get-Content命令需要用逗号分隔这些文件。 在PowerShell中相同的命令将是
Get-Content file1.txt,file2.txt,file3.txt | Set-Content files.txt
如果您需要按特定参数(例如date时间)sorting文件:
gci *.log | sort LastWriteTime | % {$(Get-Content $_)} | Set-Content result.log
我认为“powershell的方式”可能是:
set-content destination.log -value (get-content c:\FileToAppend_*.log )