特定のキーワードで始まらない行を追加するには?

特定のキーワードで始まらない行を追加するには?

私は複数のPythonファイルを変更しており、各変数宣言の前に "self."を追加する必要があります。これが私がやろうとしていることの例です。

したがって:

class testClass(parentClass):
    def __init__(self):
        parentClass.__init__(self)

        flag1               = 0  
        flag2               = 1    

        array =           (0,
                           1,
                           2)

これに関して:

class testClass(parentClass):
    def __init__(self):
        parentClass.__init__(self)

        self.flag1               = 0  
        self.flag2               = 1    

        self.array =           (0,
                                1,
                                2)

私はそれに精通していますsedが、複数の文字列/数字と一致しない行の前に行を追加する方法がわかりません。次のパターンと一致しない場合は、前にor行または^'def'or^'import'^'parentClass'を追加してください^[0-9]。どんな指示でもとても役に立ちます。ありがとうございます。

ベストアンサー1

__init__この小さな Perl 行はメソッド置換を制限しようとします。

perl -pe '
    if (/^\s* def \s+ __init__/x) {
        $start = 1;
    }
    elsif ($start) {
        s{ (\w+) (?=\s+=) }{self.$1}x;
        /^\s* (class | def) \b/x and $start = 0;
    }
' file.py

または awk の同じ論理

awk '
    $1 == "def" && $2 ~ /^__init__/ {start = 1; print; next}
    start && /^[[:blank:]]+[[:alnum:]_]+)[[:blank:]]*=/ {
        $0 = gensub(/[[:alnum:]_]+/, "self.\\0", 1)
    }
    {print}
    $1 == "def" || $1 == "class" {start = 0}
' file.py

おすすめ記事