
code.txt
我使用的是 Windows 7 。
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 版 Gawk和適用於 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 }
基斯