gpt4 book ai didi

regex - 用四个空格替换每个前导制表符,对每个文件递归

转载 作者:行者123 更新时间:2023-12-04 23:21:22 25 4
gpt4 key购买 nike

使用 Linux 中的常用工具实现这一目标的最简单方法是什么?

我看过:

  • sed ,但不太了解如何在 sed -i 's/^[\t]*/<what-to-put-here?>/g myFile.c 之类的表达式中计算匹配的前导制表符.
  • astyle ,但不知道如何告诉它只是重新缩进而不是格式化
  • indent , 和 astyle 一样的问题
  • expand ,但它也会替换非前导选项卡,我必须自己处理容易出错的就地替换。

  • 我只是在寻找可以插入 find -type f -name "*.c" -exec '<tabs-to-spaces-cmd> {}' \; 的快速简便的解决方案

    最佳答案

    你真的应该使用 expand因为它的开发只是为了做到这一点。来自其 documentation :

    -i, --initial
    do not convert tabs after non blanks


    所以单个文件的命令是:
    expand -i -t 4 input > output

    为了将它与多个文件一起使用,您需要一个技巧:
    expand_f () {
    expand -i -t 4 "$1" > "$1.tmp"
    mv "$1.tmp" "$1"
    }

    export -f expand_f
    find -type f -iname '*.c' -exec bash -c 'expand_f {}' \;

    这用于防止 expand在文件仍在处理时写入文件,并避免重定向 find 的标准输出而不是 expand 之一.

    关于regex - 用四个空格替换每个前导制表符,对每个文件递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25465961/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com