Board logo

标题: [问题求助] PowerShell如何把两个文件交替合并? [打印本页]

作者: DAIC    时间: 2013-7-7 18:55     标题: PowerShell如何把两个文件交替合并?

最近工作中遇到很多文本处理的问题,所有想学习PowerShell实现自动化。

文件a.txt:
1
2
3

文件b.txt:
a
b
c

如何合并之后生成c.txt:
1
a
2
b
3
c
作者: PowerShell    时间: 2013-7-7 22:09

$内存数组 = Get-Content 'c:\文件a.txt'
$另一个内存数组 =  Get-Content 'c:\文件b.txt'
[array]$第三个内存数组 = $内存数组[0] + $另一个内存数组[0] + $内存数组[1] + $另一个内存数组[1]
等等
Out-File  -InputObject  $第三个内存数组  -FilePath c:\123.txt

数组下标可以是变量,如 $内存数组[$m] + $另一个内存数组[$n]
可以用 for,foreach 来循环 $内存数组[$m] + $另一个内存数组[$n]

能看明白么?
作者: DAIC    时间: 2013-7-8 20:07

回复 2# PowerShell


公司服务器没有安装中文语言包,我改成了这个样子:
  1. $ArrayA = Get-Content 'a.txt'
  2. $ArrayB =  Get-Content 'b.txt'
  3. [array]$ArrayC = $ArrayA[0] + $ArrayB[0] + $ArrayA[1] + $ArrayB[1] + $ArrayA[2] + $ArrayB[2]
  4. Out-File  -InputObject  $ArrayC  -FilePath c.txt
复制代码
运行之后得到c.txt的内容都跑到一行去了:
1a2b3c
不是我需要的结果
作者: PowerShell    时间: 2013-7-8 21:05

$ArrayA = Get-Content 'a.txt'

$ArrayB =  Get-Content 'b.txt'

[array]$ArrayC += $ArrayA[0]
$ArrayC += $ArrayB[0]
$ArrayC += $ArrayA[1]
$ArrayC += $ArrayB[1]
$ArrayC += $ArrayA[2]
$ArrayC += $ArrayB[2]

Out-File  -InputObject  $ArrayC  -FilePath c.txt
作者: DAIC    时间: 2013-7-9 16:35

回复 4# PowerShell


1、文件内容比较多的时候,比如成百上千行,循环语句怎么写呢?
2、两个文件的行数可能不相等,代码如何兼容这个情况呢?
作者: PowerShell    时间: 2013-7-9 18:52

可以用 for,foreach 来循环 $内存数组[$m] + $另一个内存数组[$n]
用for的话,数组下标从0到数组的length
$aaa[0..$aaa.length]

行数不想等的话,你想用什么逻辑规则来兼容呢?
作者: DAIC    时间: 2013-7-10 21:04

回复 6# PowerShell


我尝试写了个for循环,但是得到的结果又跑到一行去了。如何修改呢?
  1. $ArrayA = Get-Content 'a.txt'
  2. $ArrayB =  Get-Content 'b.txt'
  3. [array]$ArrayC
  4. for ($i=0; $i -le $ArrayA.length; $i++)
  5. {
  6.     $ArrayC += $ArrayA[$i]
  7.     $ArrayC += $ArrayB[$i]
  8. }
  9. Out-File  -InputObject  $ArrayC  -FilePath c.txt
复制代码

作者: PowerShell    时间: 2013-7-11 21:47

初始化数组用
$ArrayC = @()
你试试灵不

手册--》主题     about_Arrays




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2