Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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
Unix 使用powershell根据文件中记录最后两个位置的值将文件子集为多个文件_Unix_Powershell_Awk - Fatal编程技术网

Unix 使用powershell根据文件中记录最后两个位置的值将文件子集为多个文件

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

我想根据powershell中文件中记录的最后两个位置的值将文件子集为多个txt文件。源文件来自IBM z/OS机器,并且没有文件扩展名。我现在做的是使用awk命令根据文件中记录最后两个位置的值对其进行子集,如下所示

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应澄清是否需要特殊处理。