
저는 Windows 7을 사용하고 있습니다. 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
...
어떻게 처리할 수 있나요?
지금까지 Linux를 사용했다면 awk
" = "를 필드 구분 기호로 사용하고 간단히 필드를 뒤집을 수 있었습니다.
awk -F " = " '{OFS=FS;print $2,$1}' file
또는 sed를 사용하여:
sed 's/\(.*\) = \(.*\)/\2 = \1/' file
하지만 Windows에서는 다음과 같은 오류가 발생하여 인식되지 않는 것 같습니다.
PS C:\Users\alliasjb\Desktop> sed
Le terme « sed » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable.
Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez
답변1
Powershell 솔루션:
- 모든 플랫폼에서 작업
- 가능한 들여쓰기 유지
(Get-Content .\code.txt) -replace '(\s*)(.*)( = )(.*)','$1$4$3$2'
(다른) 파일 추가에 저장하려면
| Set-Content .\newcode.txt
답변2
다운로드할 수 있습니다Windows용 고크그리고Windows용 sed.
sed
Win10 명령 프롬프트에서만 테스트했습니다 .
C:\bin>more test.txt
oReservist.Role = Sheets("RECAP").Cells(ligne, 2)
oReservist.Surname = Sheets("RECAP").Cells(ligne, 3)
oReservist.Name = Sheets("RECAP").Cells(ligne, 4)
C:\bin>sed.exe "s/\(.*\) = \(.*\)/\2 = \1/" test.txt
Sheets("RECAP").Cells(ligne, 2) = oReservist.Role
Sheets("RECAP").Cells(ligne, 3) = oReservist.Surname
Sheets("RECAP").Cells(ligne, 4) = oReservist.Name
답변3
또 다른 PowerShell 방법:
Import-Csv .\code.txt -Delimiter '=' -Header 'Left', 'Right' |
%{ $_.Right + ' = ' + $_.Left } | out-file .\newcode.txt
들여쓰기를 미리 유지해야 하는 경우 ForEach(%) 블록을 수정하면 됩니다.{ ' ' + $_.Right + ' = ' + $_.Left }
키스