Board logo

标题: [问题求助] PowerShell怎样替换文本指定行内容? [打印本页]

作者: 786021512    时间: 2018-11-28 18:51     标题: PowerShell怎样替换文本指定行内容?

在目录下我有有些文本如下
&ACCESS
;!******BATHOME*******
BATHOME(NET589WP1234,666666,ACTION)
BATHOME(NET892WP1256,666666,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,666666,ACTION)
BATHOME(NET589WP1266,666666,ACTION)
BATHOME(NET789WP1235_P1,666666,ACTION)

想要变成
&ACCESS
;!******BATHOME*******
BATHOME(NET589WP1234,5891234,ACTION)
BATHOME(NET892WP1256,8921256,ACTION)
BATMAN(NET789WP1235_P1,666666,ACTION)
BATHOME(NET523WP1255,5231255,ACTION)
BATHOME(NET587WP1266,5871266,ACTION)
BATHOME(NET789WP1235_P1,7891235,ACTION)

也就是把第二节NET后面的3位数字+WP后面的四位数字替换,第三节666666内容
还有一点就是只能替换BATHOME行,不能对batman进行替换
个人苦思冥想实在想不出,只能变其中一行后面就歇菜了
这个已经在BAT版块实现了,想要看看用shell怎么写的谢谢大家
作者: xczxczxcz    时间: 2018-11-28 21:43

PowerShell 和 Shell 应该是两个不同的东西。你发在Powershell 版块 那你的所指就是Ps了。
  1. Foreach ($line in (gc ".\Ref.txt")){
  2. if ($line -match "^BATHOME"){
  3. $Arr=@($line -Split("NET|WP|,"))
  4. $Arr[3]=([string]$Arr[1]+([string]($Arr[2])).Split('_')[0])
  5. $str=$Arr[0]+'NET'+[string]$Arr[1]+'WP'+[string]$Arr[2]+','+[string]$Arr[3]+','+$Arr[4]
  6. Write-HOST $str -fore Magenta
  7. } else {
  8. Write-HOST $line
  9. }
  10. }
  11. pause
复制代码
=========不输出。看看就行。保存 XXX.PS1。===============
作者: 786021512    时间: 2018-11-29 11:24

回复 2# xczxczxcz
是的但是我powershell不会用用了上述以后一闪而过,是我哪里设置的不对吗
作者: Batcher    时间: 2018-11-29 11:48

回复 3# 786021512


    什么操作系统?哪个版本的PowerShell呢?
作者: xczxczxcz    时间: 2018-11-29 12:51

看样子 楼主的系统是 WIN7。WIN7默认是不允许运行PS脚本的。WIN8默认会弹出策略选择。只有WIN10才能正常运行。好像PS就是为WIN10准备的一样。其实上面的脚本在PS2.0就可以正常运行。
在WIN7中要运行PS脚本有几个比较首心的办法:法一、打开PS命令行窗口,把脚本内容粘贴进去再回车。
法二、把PS脚本写到 BAT 内容里,运行BAT即可。法三、修改PS策略以便直接运行PS脚本。
----------------------------
把下面的内容保存为 policy.ps1 右键PS运行。或者在PS窗口中粘贴脚本内容,回车。然后你就可以运行 PS 脚本了。
  1. Set-ExecutionPolicy -Scope CurrentUser bypass|select A
  2. pause
复制代码
============enjoy=====================
作者: Batcher    时间: 2018-11-29 13:31

回复 3# 786021512


试试这样设置一下能运行吗
http://bbs.bathome.net/thread-31071-1-1.html




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