문자 앞뒤의 텍스트 교체 [닫기]

문자 앞뒤의 텍스트 교체 [닫기]

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

프라빈@프라빈:~$

관련 정보