Unix 使用powershell根据文件中记录最后两个位置的值将文件子集为多个文件
我想根据powershell中文件中记录的最后两个位置的值将文件子集为多个txt文件。源文件来自IBM z/OS机器,并且没有文件扩展名。我现在做的是使用awk命令根据文件中记录最后两个位置的值对其进行子集,如下所示Unix 使用powershell根据文件中记录最后两个位置的值将文件子集为多个文件,unix,powershell,awk,Unix,Powershell,Awk,我想根据powershell中文件中记录的最后两个位置的值将文件子集为多个txt文件。源文件来自IBM z/OS机器,并且没有文件扩展名。我现在做的是使用awk命令根据文件中记录最后两个位置的值对其进行子集,如下所示 awk '{print > "file.txt" substr($0,length-2,2) }' RAW 文件名是原始的,它根据记录中最后两个不同的值创建多个文件。因此,如果AA是文件记录最后两个位置的值。我会得到一个像fileAA.txt一样输出的文件。如何在power
awk '{print > "file.txt" substr($0,length-2,2) }' RAW
文件名是原始的,它根据记录中最后两个不同的值创建多个文件。因此,如果AA是文件记录最后两个位置的值。我会得到一个像fileAA.txt一样输出的文件。如何在powershell中实现这一点
谢谢您可以尝试以下方法:
Get-Content RAW | %{ $fn="file"+$_.Substring($_.length-2)+".txt"; $_ | Out-File $fn -Append; }
我很乐意帮忙,但我无法理解你的要求。当您说“最后两个位置”时,您是指最后两个字节,还是将文件视为一系列结构/记录?我不熟悉像CED/AWK这样的软件,所以这个例子对我也没有帮助!但是,长话短说,是的,PowerShell将能够做到这一点。。。只需要了解您需要什么。我猜可能不止一行以
AA
结尾,您将输出文件
一次输出每一行,因此您可能应该将-Append
开关添加到输出文件
命令。@robert.westerlund谢谢!我不熟悉powershell,我只是在谷歌上搜索了一下。这只是一个建议,你可以编辑和更新你的答案。只是希望帮助改进它。希望没有记录在最后两个字符中包含非法字符。例如,以6:
结尾的行将抛出错误:Out File:找不到驱动器。名为“file6”的驱动器不存在。
或以\G
结尾的驱动器将抛出:文件:路径中的非法字符。
除此之外,这看起来是一个很好的答案。@TheMadTechnician感谢您的评论!OP应澄清是否需要特殊处理。