![文字の前後のテキストの置換[閉じる]](https://linux33.com/image/155966/%E6%96%87%E5%AD%97%E3%81%AE%E5%89%8D%E5%BE%8C%E3%81%AE%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E7%BD%AE%E6%8F%9B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
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
プラビン@フラビン:~$