Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 修改文件内容的shell

修改文件内容的shell

已定时 已固定 已锁定 已移动 OpenFOAM
8 帖子 3 发布者 5.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 Samuel-Tu 编辑
    #1

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

    X 1 条回复 最后回复
  • X 在线
    X 在线
    xpqiu 超神
    在 中回复了 Samuel-Tu 最后由 编辑
    #2

    @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 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 xpqiu 最后由 编辑
    #3

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

    1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 xpqiu 最后由 编辑
    #4

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

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

    S 1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 浪迹天大 最后由 编辑
    #5

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

    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 Samuel-Tu 最后由 编辑
    #6

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

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

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #7

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

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #8

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

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]