相关文章推荐
好帅的海龟  ·  從 Android 轉用 iPhone - ...·  1 年前    · 
坏坏的麦片  ·  解决WCF大数据量传输 ...·  3 年前    · 
很酷的橡皮擦  ·  react ...·  3 年前    · 
高大的猕猴桃  ·  python ...·  3 年前    · 

powershell实现多文件字符串批量替换

当需要进行文件内字符串批量替换时,比如想把文件夹中所有txt文件中所有的A替换成B,在linux中可以使用sed,很方便,一行代码就完事了:

sed -i"s#A#B#g" *.txt

在windows环境下,就需要找个别的替代方案了。当然,windows下有一些可以实现这样功能的小软件,也可以使用wsl,不过wsl的io会差一些,而且不能访问局域网内的其他电脑(有知道这个怎么弄么,欢迎评论区讨论一下~),我就是因为这种需求才琢磨着学习和使用powershell。

这是我目前研究出来的方法,记录和分享一下:

foreach($i in ls *.txt){
         ((Get-Content -Path $i) -replace A,B) | Set-Content -Path $i
}

也可以批量替换多个字符串,多加几个replace就好

foreach($i in ls *.txt){
         ((Get-Content -Path $i) -replace A,B -replace C,D) | Set-Content -Path $i
}

比起sed要麻烦一点,不过也是解决了我的问题。

最后说点个人感受,powershell看起来是个要比bash shell高级一些的东西,不过生态是真不咋样,想找点东西不太容易,没有方便的grep/sed/awk确实有点可惜,对于先学了shell的人来说很容易放弃。

发布于 2022-02-22 14:02