cmd.exe에 대한 sed와 같은 유틸리티가 있습니까?[닫은]
해결책
오늘 PowerShell은 나를 구했습니다.
을 위한 grep
다음이 있습니다 :
get-content somefile.txt | where { $_ -match "expression"}
그리고 sed
다음이 있습니다 :
get-content somefile.txt | %{$_ -replace "expression","replace"}
자세한 내용은 참조하십시오 Zain Naboulsis 블로그 항목.
다른 팁
sed
(및 그에 상응하는 것)은 여러 Unix 명령 패키지에 포함되어 있습니다.
- 시그윈 작동하지만 거대합니다.
- UnxUtils 훨씬 더 얇아졌습니다.
- GnuWin32 작동하는 또 다른 포트입니다.
- 또 다른 대안은 AT&T Research의 것입니다. 유윈시스템.
- MSYS MinGw의 또 다른 옵션입니다.
- Linux용 Windows 하위 시스템 가장 "기본적인" 옵션이지만 Windows에는 기본적으로 설치되지 않습니다.그것은 가지고있다
sed
,grep
등.하지만 상자 밖으로. - https://github.com/mbuilov/sed-windows 지원하는 최신 4.3 및 4.4 버전을 제공합니다.
-z
옵션 나열된 상위 포트와는 달리
아무것도 설치하고 싶지 않고 시스템이 Windows Server 시스템이 아닌 경우 ~할 수 있었다 이를 위해 스크립팅 언어(예: VBScript)를 사용하세요.아래는 그것에 대한 총체적이고 기발한 찌르기입니다.명령줄은 다음과 같습니다.
cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt
oldpat와 newpat가 있는 곳 Microsoft vbscript 정규식 패턴.분명히 나는 대체 명령을 구현하고 몇 가지 사항을 가정했지만 더 똑똑하고 더 많은 것을 이해하도록 구체화할 수 있습니다. sed
명령줄.
Dim pat, patparts, rxp, inp
pat = WScript.Arguments(0)
patparts = Split(pat,"/")
Set rxp = new RegExp
rxp.Global = True
rxp.Multiline = False
rxp.Pattern = patparts(1)
Do While Not WScript.StdIn.AtEndOfStream
inp = WScript.StdIn.ReadLine()
WScript.Echo rxp.Replace(inp, patparts(2))
Loop
아무것도 설치하지 않으려면 (다른 시스템에서 실행될 솔루션/프로그램 등에 스크립트를 추가한다고 가정 함) VBS 스크립트를 만들 수 있습니다 (replace.vbs).
Const ForReading = 1
Const ForWriting = 2
strFileName = Wscript.Arguments(0)
strOldText = Wscript.Arguments(1)
strNewText = Wscript.Arguments(2)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, strOldText, strNewText)
Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
objFile.Write strNewText
objFile.Close
그리고 당신은 이것처럼 그것을 실행합니다.
cscript replace.vbs "C:\One.txt" "Robert" "Rob"
이는 "Bill Weaver"가 제공하는 SED 버전과 유사하지만이 제품은 특별한 ( '> < /)의 측면에서 더 친숙하다고 생각합니다.
BTW, 나는 이것을 쓰지 않았지만 어디에서 얻었는지 기억할 수 없습니다.
거기 있습니다 슈퍼 SED SED의 향상된 버전. Windows의 경우 이것은 명령 줄에서 실행하기위한 독립형 .exe입니다.
fart.exe를 사용해보십시오. 명령 배치 프로그램에서 사용할 수있는 Find-and-replace-Text 유틸리티입니다.
> (Get-content file.txt) | Foreach-Object {$_ -replace "^SourceRegexp$", "DestinationString"} | Set-Content file.txt
이것은 행동입니다
sed -i 's/^SourceRegexp$/DestinationString/g' file.txt
Cygwin을 설치할 수 있습니다 (http://www.cygwin.com/) 그리고 거기에서 SED를 사용하십시오.
PowerShell을 시도 할 수 있습니다. 거기 있습니다 콘텐츠를 얻으십시오 그리고 설정 컨텐츠 CommandLets는 사용할 수 있다는 점을 구축합니다.
나는 사용한다 Cygwin. 나는 Cygwin Binaries를 당신의 길에 놓으면 Windows 명령 쉘 내에서 그것들을 사용할 수 있다는 것을 깨닫지 못하는 많은 사람들을 만나게됩니다. Cygwin의 배쉬를 실행할 필요는 없습니다.
당신은 또한 조사 할 수도 있습니다 UNIX 용 Windows 서비스 Microsoft에서 구할 수 있지만 (전문가 및 이상의 Windows 버전에서만) 제공됩니다.
에드린 또는 편집
또한 Windows 용 Unix 도구와 함께 제공되는 Unix 용 Windows 서비스가 있습니다.http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx
Windows 2003 R2, Wind 그러나 유틸리티를 다운로드해야합니다.http://www.microsoft.com/en-us/download/details.aspx?id=2391
당신은 볼 수 있습니다 GNU 도구, 그들은 창문에 SED를 제공합니다.
Windows 호출에 대한 도우미 배치 파일이 있습니다 repl.bat
SED의 능력은 많지만 doesn't require any additional download
또는 설치. 사용하는 하이브리드 배치 파일입니다 Jscript
기능을 구현합니다 swift
, 그리고 doesn't suffer from the usual poison characters
배치 가공 및 빈 선을 쉽게 처리합니다.
다운로드 repl
에서 - https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
저자는 Stack Overflow 및 Dostips.com의 @dbenham입니다
다른 도우미 배치 파일이 호출되었습니다 findrepl.bat
Windows 사용자에게 능력의 많은 부분을 제공합니다 GREP
또한 기반입니다 Jscript
마찬가지로 하이브리드 배치 파일입니다. Repl.bat의 이점을 공유합니다
다운로드 findrepl
에서 - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat
저자는 Stack Overflow 및 Dostips.com의 @Aacini입니다
내가 아는 한 SED와 같은 것은 Windows와 함께 번들로 제공되지 않습니다. 그러나 SED는 Cygwin의 일부, 전체 POSIX 하위 시스템을 원하는 경우 또는 명령 줄에서 SED를 실행하려는 경우 Win32 기본 실행 파일을 포함하여 여러 가지 형태의 Windows에서 사용할 수 있습니다.
sed for Windows (gnuwin32 프로젝트)
Windows에 고유 해야하는 경우 내가 제안 할 수있는 유일한 것은 vbscript와 같은 애드온이없는 Windows에서 지원하는 스크립팅 언어를 사용하는 것입니다.
Cygwin은 작동하지만 이것들 유틸리티도 제공됩니다. 드라이브에 올려 놓고 디렉토리를 경로에 넣으면 친절한 유닉스 유틸리티가 많이 있습니다. LiTHERWEAGHT IMHO 그 cygwin (그럼에도 불구하고 작동하지만).
Windows CMD.Exe 프롬프트에서 작동하는 SED 도구가 필요했습니다. 에릭 포임의 항구 sed 단일 dos .exe에 나를 위해 잘 일했습니다.
꽤 잘합니다 문서화.
이것은 Pro에 대해 확실하지 않은 Vista Ultimate에서 작동합니다.
sed -f commandfilename.cmd file1 > file2