首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

大神们 CentOS 怎么批量修改文件内容

  •  
  •   solopython · 48 天前 · 2363 次点击
    这是一个创建于 48 天前的主题,其中的信息可能已经有所发展或是发生改变。

    CentOS 下怎么批量修改 /var/XX/A.conf 文件中的内容,XX 是可变文件夹,要修改的配置文件 A.conf 是固定名称,要求对 A 中的多个变量值进行修改或追加变量,小弟有点 python 基础

    25 回复  |  直到 2019-09-28 09:55:30 +08:00
        1
    no1xsyzy   48 天前
    一般不是写作 /var/*/A.conf 或者 /var/**/A.conf 么?
    因此,看得出你没有 Unix 基础。

    另外,准备用 python 了还不简单?我还以为你想用 awk/sed 呢
        2
    guxingke   48 天前 via Android
    有锤子 有钉子 锤就是了
        3
    mikeguan   48 天前 via Android
    1.用*通配目录,sed 直接修改文件
    2.目录太多的话,可以先 find 然后 sed 进行修改
    3.用 Python 遍历目录读文件修改应该也行
        4
    loading   48 天前
    walk 一遍目录,判断文件名就行,都 python 了。
        5
    lihongjie0209   48 天前
    find | sed
        6
    XSG   48 天前
    ```
    sed -i 's/aaa/bbb/g' `find /var/ -name A.conf`
    ```
        7
    solopython   48 天前
    @no1xsyzy XX 是有固定前缀的一些文件夹,不是所有的文件夹
        8
    Techzero   48 天前 via Android
    @solopython 那就 /var/XX*/ 呗
        9
    no1xsyzy   48 天前
    有这提问题的时间( 1.5 小时)代码已经写好了
        10
    MyPassWordis   48 天前
    @XSG #6 pipline 和 subshell 哪个好点?一直习惯用管道,还真不怎么这么写
        11
    solopython   48 天前
    @loading 怎么替换文件中指定的变量名及其值?
        12
    solopython   48 天前
    @no1xsyzy 知道啥叫抛砖引玉吗
        13
    henices   48 天前
    用 perl 吧, 不要忘记这个老东西。
        14
    no1xsyzy   48 天前   ♥ 1
    @solopython 我不明白你抛的是啥砖引的是啥玉
    你一块砖都没抛出来,抛个问题当自己抛砖?
    抛砖引玉也不该在 Python 节点里
        15
    neroxps   48 天前
    楼主的意思是还需要解析每一个 conf 文件?

    这样就上 python 或者 bash 就是了,两大运维工具想咋搞都行
        16
    blackeeper   48 天前
    懂 shell,那么 find | xargs | sed 搞定
    懂 python,work 遍历一遍就可以了
        17
    loading   48 天前 via Android
    @solopython 正则表达式
        18
    solopython   48 天前
    不出力,还屁话多,鄙视你
        19
    solopython   48 天前   ♥ 1
    @loading @blackeeper walk 搞定,3Q

    import os
    import re

    list=[]
    for root,dirs,files in os.walk("/var/",topdown=False):
    for name in files:
    if name.startswith("A.conf"):
    list.append(os.path.join(root,name))

    for a in list:
    with open(a,'r+') as f:
    data = f.read()
    f.seek(0)
    f.write(re.sub(r"model(.*)","model=4",data))
    f.truncate()
        20
    TimePPT   48 天前
    如果用 Python3,可以试试 pathlib,比 os.path 好使很多
        21
    bobylive   48 天前
    https://github.com/noqcks/gucci

    很多做 Docker Image 的都在用,具備程序邏輯語法的配置文件處理。
        22
    TimePPT   48 天前
        23
    Foreverdxa   47 天前
    我至少可以用 4 中语言给你实现
        24
    Neveroldmilk   47 天前
    用 shell 命令,别用 python。
        25
    realpg   47 天前
    @solopython #12
    你这不叫抛砖引玉 叫懒
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2832 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 11:21 · PVG 19:21 · LAX 03:21 · JFK 06:21
    ♥ Do have faith in what you're doing.