文字の前後のテキストの置換[閉じる]

文字の前後のテキストの置換[閉じる]

code.txt次の式を含む大きなテキストファイルがあります。

        oReservist.Role = Sheets("RECAP").Cells(ligne, 2)
        oReservist.Surname = Sheets("RECAP").Cells(ligne, 3)
        oReservist.Name = Sheets("RECAP").Cells(ligne, 4)
        ...

方程式の最初の部分を2番目の部分に変更し、2番目の部分を最初の部分に変更したいと思います。言い換えれば:

        Sheets("RECAP").Cells(ligne, 2) = oReservist.Role
        Sheets("RECAP").Cells(ligne, 3) = oReservist.Surname
        Sheets("RECAP").Cells(ligne, 4) = oReservist.Name 
        ...

この問題にどのように対処する必要がありますか?これまでは、前と後の部分だけを削除できます。

sed 's/.*=.*//' file

答え1

awkフィールド区切り文字としてwithを使用し" = "てフィールドを反転するだけです。

awk -F " = " '{OFS=FS;print $2,$1}' file

または以下を使用してくださいsed

sed 's/\(.*\) = \(.*\)/\2 = \1/' file

(キャプチャリンググループを使用し、\(...\)代替文字列で使用して\1呼び出す\2

行の先頭のタブやスペースも削除されません。

出力:

Sheets("RECAP").Cells(ligne, 2) =         oReservist.Role
Sheets("RECAP").Cells(ligne, 3) =         oReservist.Surname
Sheets("RECAP").Cells(ligne, 4) =         oReservist.Name

これを保存するには、次の方法でキャプチャできます。

sed 's/\([[:blank:]]*\)\(.*\) = \(.*\)/\1\3 = \2/' file

または、最初のキャプチャでスペースを省略します。

sed 's/\([^[:blank:]]*\) = \(.*\)/\2 = \1/' file

出力:

        Sheets("RECAP").Cells(ligne, 2) = oReservist.Role
        Sheets("RECAP").Cells(ligne, 3) = oReservist.Surname
        Sheets("RECAP").Cells(ligne, 4) = oReservist.Name

答え2

次の2つの方法を試しました。

Python

#!/usr/bin/python
m=open('filename','r')
for i in m:
    k=i.strip().split('=')
    fi=k[1]
        la=k[0]
        print "{0}={1}".format(fi,la)

出力

Sheets("RECAP").Cells(ligne, 2)=oReservist.Role 
 Sheets("RECAP").Cells(ligne, 3)=oReservist.Surname 
 Sheets("RECAP").Cells(ligne, 4)=oReservist.Name 

方法2

awk -F "=" '{print $2"="$1}' y.txt|sed -r "s/\s+//g" 

Sheets("RECAP").Cells(ligne,2)=oReservist.Role
Sheets("RECAP").Cells(ligne,3)=oReservist.Surname
Sheets("RECAP").Cells(ligne,4)=oReservist.Name

プラビン@フラビン:~$

関連情報