【问题标题】:How to search-replace content within files in Ubuntu Linux?如何在 Ubuntu Linux 中搜索替换文件中的内容?
【发布时间】:2011-04-21 15:00:22
【问题描述】:

我的平台:Ubuntu linux 工作站

在一个目录下,我有一系列文件,文件名为xxx_1.in到xxx_50.in

对于每个文件,我想将 abc 替换为 def。如果我单独做,我应该输入 :g/abc/s//def/g

如何编写脚本一次处理所有文件?

【问题讨论】:

  • 我清理了一些语法并澄清了标题。
  • 您是在文件内容还是名称中将abc 替换为def?我两个都做。

标签: file ubuntu replace


【解决方案1】:
sed -i 's/abc/def/g' xxx_*.in

应该够了

【讨论】:

    【解决方案2】:

    我喜欢 Python,即使是 shell 脚本。我实在搞不懂sed怎么用,所以还是坚持用Python的搜索替换:

    #!/usr/bin/env python
    import os, glob
    
    for filename in glob('xxx_*.in'):
      os.rename(filename , filename .replace('abc', 'def'))
    

    因此,当您将其复制/粘贴到终端时运行的内联脚本(我当前的机器上没有 Python,因此无法保证),

    python -c "import os, glob; eval('for f in glob(\'xxx_*.in\'):\n  os.rename(filename , filename .replace(\'abc\', \'def\'))'"
    

    您的意思似乎是文件的内容那个,我可以不用 Python(希望这可行):

    for f in xxx_*.in; do sed s/abc/def/g "$f"; done
    

    【讨论】:

    • 一定要引用文件名变量,如"$f"
    猜你喜欢
    • 2014-12-29
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    相关资源
    最近更新 更多