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가지 방법을 시도했습니다.
파이썬
#!/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
프라빈@프라빈:~$