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