Navigation

    CFD中文网

    CFD中文网

    • Login
    • Search
    • 最新

    修改文件内容的shell

    OpenFOAM
    3
    8
    976
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Samuel-Tu last edited by Samuel-Tu

      做一下伸手党,大家有没有修改文件内容的shell文件模板分享下。例如我想把constant/polymesh/boundary里的边界inlet的类型改为patch,想提高一下效率,手动改太麻烦了。我对shell不是很熟,怎么查找关键字然后替换,而且还带回车隔行,不知道怎么改。。。。
      有老哥能分享一下吗,或者of的tutorial里面有这种的shell吗,我研究一下,万谢。。

      X 1 Reply Last reply Reply Quote
      • X
        xpqiu 教授 @Samuel-Tu last edited by

        @Samuel-Tu 你去研究一下 foamDictionary 这个命令的用法,绝大部分对openfoam 的dict 文件的修改都可以用这个命令来进行。
        另外,sed 也有很多技巧能实现这种替换。你的需求可以这样来分解,首先找到 inlet,然后替换 inlet 下面的 type,如果用sed,则可以

         sed  -i '/inlet/,+2s/wall/patch/' boundary
        

        命令解释:

        '/inlet/,+2'
        

        是一个范围,表示从匹配到 inlet 的行开始到它之下的2行,s是命令,表示替换,也就是在前面定义的范围内进行替换。/wall/patch/ 表示实际的替换操作,这里是把 wall 替换成 patch。最后的 boundary是文件名。

        WARNING: 注意到 sed 之后的 -i 选项,这个选项用了之后,会直接修改 boundary 文件的内容,所以除非你确信你的替换命令是正确的,才建议直接用 -i 选项,如果仅仅是想看一下替换的效果,去掉 -i,这样命令会把替换之后的效果打印到屏幕上,不会直接修改文件。

        抛砖引玉。

        S 浪 2 Replies Last reply Reply Quote
        • S
          Samuel-Tu @xpqiu last edited by

          @xpqiu 太感谢了!正是我需要的

          1 Reply Last reply Reply Quote
          • 浪
            浪迹天大 @xpqiu last edited by

            @xpqiu 以前用sed,现在也爱上foamDictionary了,但是它会把注释弄没了,还强行帮我格式化一下,这点不太喜欢。

            OpenFOAM 学习交流:https://openfoam.top

            S 1 Reply Last reply Reply Quote
            • S
              Samuel-Tu @浪迹天大 last edited by

              @浪迹天大 看了一下foamDictionary好像确实可以很方便的满足我的需求。格式化一下是啥意思

              浪 1 Reply Last reply Reply Quote
              • 浪
                浪迹天大 @Samuel-Tu last edited by

                @Samuel-Tu 比如你有一个大括号,包含很多行的内容,用一下就把你变成一行了。

                OpenFOAM 学习交流:https://openfoam.top

                1 Reply Last reply Reply Quote
                • S
                  Samuel-Tu last edited by

                  foamDictionary -entry entry0.inlet.type -set "patch" constant/polyMesh/boundary
                  注意要加entry0,不然识别不到inlet

                  1 Reply Last reply Reply Quote
                  • S
                    Samuel-Tu last edited by

                    最近多次使用foamDictinary感觉真是太用了,自己在文件里面加的keys也能识别出来并修改

                    1 Reply Last reply Reply Quote
                    • First post
                      Last post

                    CFD中文网 | 东岳流体 | 京ICP备15017992号-2