交换字符前后的文本

交换字符前后的文本

我有一个大文本文件,code.txt其中包含以下等式

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

我想用第二个部分改变等式的第一部分,用第一个部分改变第二部分。也就是说 :

        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

使用awkwith" = "作为字段分隔符,只需将字段翻转即可。

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

普拉文@普拉文:~$

相关内容