代码之家  ›  专栏  ›  技术社区  ›  Notinlist

sed:在一个位置上插入一个角色

  •  1
  • Notinlist  · 技术社区  · 14 年前

    sed "s/public \(.*\) get\(.*\)()/\1 \2/g"
    

    你要换这个吗

    public class ChallengeTO extends AbstractTransferObject {
            public AuthAlgorithm getAlgorithm();
            public long getCode();
            public int getIteration();
            public String getPublicKey();
            public String getSelt();
    };
    

    在这里

    public class ChallengeTO extends AbstractTransferObject {
            AuthAlgorithm Algorithm;
            long Code;
            int Iteration;
            String PublicKey;
            String Selt;
    };
    

    我想改变 Algorithm algorithm , PublicKey publicKey 等等如何转换第二段的第一个字符( \2 )改成小写?

    更新

    sed "s/public \(.*\) get\([A-Z]\)\(.*\)()/\1 \2\3/g" 选择“我的信”作为 \2 ,但如果我 \L 在它转变太多之前(包括 \3

    2 回复  |  直到 9 年前
        1
  •  1
  •   ghostdog74    14 年前

    awk '
    $1=="public" && $3~/^get/ {
        sub(/^get/,"",$3)
        $3=tolower( substr($3,1,1) ) substr($3,2)
        $0="\t"$2" "$3
    }1' file
    

    输出

    $ cat file
    public class ChallengeTO extends AbstractTransferObject {
            public AuthAlgorithm getAlgorithm();
            public long getCode();
            public int getIteration();
            public String getPublicKey();
            public String getSelt();
    };
    
    $ ./shell.sh
    public class ChallengeTO extends AbstractTransferObject {
            AuthAlgorithm algorithm();
            long code();
            int iteration();
            String publicKey();
            String selt();
    };
    

    如果您仍然喜欢sed,下面是对您的版本的修改,添加 \l

    $ sed 's/public \(.*\) get\([A-Z]\)\(.*\)()/\1 \l\2\3/g' file
    public class ChallengeTO extends AbstractTransferObject {
            AuthAlgorithm algorithm;
            long code;
            int iteration;
            String publicKey;
            String selt;
    };
    
        2
  •  1
  •   Community Romance    7 年前

    这与 upper- to lower-case using sed .

    编辑:这里的问题/答案使用 \L GNU公司 sed \我 可通过关闭 \E \2 ,你可以放一个 \我 在它和 紧随其后。

    看到了吗 GNU sed documentation 更多信息。

    如果没有GNU扩展,可以使用两个单独的 塞德 命令。你可以用 y 命令将与源字符之一匹配的字符更改为相应的目标字符。这类似于Unix实用程序 tr .