디렉토리에 files.txt 파일 목록이 있습니다. 각 파일을 통해 텍스트 대체를 실행하고 싶습니다.powershell에서 perl로 파일 편집
$f = (get-content files.txt)
Foreach ($i in $f) { perl -pi -we "s/(\d{0,4})- /$1 - /g" $i }
하지만 펄은 백업하지 않고이 작업을 수행하지 않습니다.
백업없이 바로 편집 할 수 없습니다.
그래서 나는 -i하는 박을 추가 :
$f = (get-content files.txt)
Foreach ($i in $f) { perl -pi.bak -we "s/(\d{0,4})- /$1 - /g" $i }
을 그리고 지금은 불평 :
펄 스크립트 "박"을 열 수 없습니다 : 그런 파일이나 디렉토리를
무엇이 누락 되었습니까?
UPDATE :
내가 선호하는 것은 전적으로 쉘없이이 작업을 수행하는 방법입니다. 어떻게 든 $^I
으로 펄에서이 루프를 할 수 있습니까? 0-9보다 더
Windows에서는 -i.bak 스위치를 단독으로 사용해야합니다. 마찬가지로, perl -i.bak -pwe ... \ d {0.4}을 원하고 \ d {1,4}가 아니겠습니까 –
@Chris Charley, 그건 사실이 아닙니다. Windows의 Perl은'-pi.bak'를 완벽하게 받아들입니다. 즉 PowerShell은'-pi.bak' (특히'-pi .bak') 이외의 것을 전달하는 것으로 보이므로 * PowerShell *에 적합한 작업 일 수 있습니다. – ikegami
@wdkrnls,'perl -pi.bak -we "s/(\ d {0,4}) -/$ 1 -/g"'괜찮습니다. 이 문제는 PowerShell의 특정 문제인 것으로 보입니다. – ikegami