标题: [问题求助] 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了。- Foreach ($line in (gc ".\Ref.txt")){
- if ($line -match "^BATHOME"){
- $Arr=@($line -Split("NET|WP|,"))
- $Arr[3]=([string]$Arr[1]+([string]($Arr[2])).Split('_')[0])
- $str=$Arr[0]+'NET'+[string]$Arr[1]+'WP'+[string]$Arr[2]+','+[string]$Arr[3]+','+$Arr[4]
- Write-HOST $str -fore Magenta
- } else {
- Write-HOST $line
- }
- }
- 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 脚本了。- Set-ExecutionPolicy -Scope CurrentUser bypass|select A
- pause
复制代码
============enjoy=====================
作者: Batcher 时间: 2018-11-29 13:31
回复 3# 786021512
试试这样设置一下能运行吗
http://bbs.bathome.net/thread-31071-1-1.html
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |