我有一个大文本文件,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
使用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
普拉文@普拉文:~$