大神们 CentOS 怎么批量修改文件内容 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
solopython

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

  •  
  •   solopython Sep 27, 2019 5964 views
    This topic created in 2415 days ago, the information mentioned may be changed or developed.

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

    25 replies    2019-09-28 09:55:30 +08:00
    no1xsyzy
        1
    no1xsyzy  
       Sep 27, 2019
    一般不是写作 /var/*/A.conf 或者 /var/**/A.conf 么?
    因此,看得出你没有 Unix 基础。

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

    这样就上 python 或者 bash 就是了,两大运维工具想咋搞都行
    blackeeper
        16
    blackeeper  
       Sep 27, 2019
    懂 shell,那么 find | xargs | sed 搞定
    懂 python,work 遍历一遍就可以了
    loading
        17
    loading  
       Sep 27, 2019 via Android
    @solopython 正则表达式
    solopython
        18
    solopython  
    OP
       Sep 27, 2019
    不出力,还屁话多,鄙视你
    solopython
        19
    solopython  
    OP
       Sep 27, 2019   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()
    TimePPT
        20
    TimePPT  
    PRO
       Sep 27, 2019
    如果用 Python3,可以试试 pathlib,比 os.path 好使很多
    bobylive
        21
    bobylive  
       Sep 27, 2019
    https://github.com/noqcks/gucci

    很多做 Docker Image 的都在用,具程序法的配置文件理。
    TimePPT
        22
    TimePPT  
    PRO
       Sep 27, 2019
    Foreverdxa
        23
    Foreverdxa  
       Sep 27, 2019
    我至少可以用 4 中语言给你实现
    Neveroldmilk
        24
    Neveroldmilk  
       Sep 28, 2019
    用 shell 命令,别用 python。
    realpg
        25
    realpg  
    PRO
       Sep 28, 2019
    @solopython #12
    你这不叫抛砖引玉 叫懒
    About     Help     Advertise     Blog     API     FAQ     Solana     1172 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 23:17 PVG 07:17 LAX 16:17 JFK 19:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86