gpt4 book ai didi

regex - 如何根据目录名称更改多个文件的内容?

转载 作者:太空狗 更新时间:2023-10-29 11:13:25 26 4
gpt4 key购买 nike

我有几个目录 9.[0-9]15,其中有一个文件 file1,其内容如下:

#/9.015/file1
blah
9.015 blah
blah 9.01577 blah
blah

我已将此 file1 复制到所有目录。我想根据它们所在目录的名称从每个目录修改这个文件。所以 /9.115/file1 是:

#/9.115/file1
blah
9.115 blah
blah 9.11577 blah
blah

等等。我知道我必须使用正则表达式组来查找和修改我想要的部分,但我不知道如何在使用目录名称作为文件替换的同时循环遍历每个目录的文件。

最佳答案

试试这个:

for i in 9.[0-9]15/file1 ; do d=`echo $i|sed 's/^\(9\.[0-9]15\).*/\1/'` ; sed -i $i -e "s/9.015/$d/" ; done

这里我使用echosed获取文件名的必要部分。

正如@4ae1e1 在下面的评论中提到的,您可以使用参数扩展而不是 echo + sed : d=${i%/*} .有关参数扩展的更多信息,请参阅 in documentation .

至于我,扩展的语法很难记住 :( 恕我直言,ad hoc one shot one-liner 可以做一些“不必要的” fork 。

是的,使用可读的变量名是个好主意。

关于regex - 如何根据目录名称更改多个文件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com