programing

cmd.exe에 대한 sed와 같은 유틸리티가 있습니까?

testmans 2023. 5. 20. 10:30
반응형

cmd.exe에 대한 sed와 같은 유틸리티가 있습니까?

Windows 명령줄(cmd.exe)을 사용하여 파일 내용을 프로그래밍 방식으로 편집합니다.*nix에는 이 작업에 대한 sed가 있습니다.윈도우에 유용한 네이티브 등가물(cmd 또는 ps)이 있습니까?

오늘 파워셸이 날 구했어요

위해서grep다음이 있습니다.

get-content somefile.txt | where { $_ -match "expression"}

또는

select-string somefile.txt -pattern "expression"

에 대해서도sed다음이 있습니다.

get-content somefile.txt | %{$_ -replace "expression","replace"}

PowerShell 교체 기능에 대한 자세한 내용은 이 Microsoft 문서를 참조하십시오.

sed(및 그 유사체)는 유닉스 명령의 여러 패키지에 포함되어 있습니다.

  • Cygwin은 일을 하지만 거대합니다.
  • UnxUtils가 훨씬 더 날씬합니다.
  • GnuWin32는 작동하는 또 다른 포트입니다.
  • 또 다른 대안은 AT&T 리서치의 UWIN 시스템입니다.
  • MinGw의 MSYS는 또 다른 옵션입니다.
  • Linux용 Windows Subsystem은 대부분의 "기본" 옵션이지만 기본적으로 Windows에 설치되지 않습니다.sed,grep하지만, 상자 밖으로 나온 등.
  • https://github.com/mbuilov/sed-windows 나열된 상위 포트와 달리 옵션을 지원하는 최신 4.3 및 4.4 버전을 제공합니다.

아무 것도 설치하지 않고 시스템이 Windows Server가 아닌 경우 스크립트 언어(예: VBScript)를 사용할 수 있습니다.아래는 역겹고 즉흥적인 시도입니다.명령줄은 다음과 같습니다.

cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt

여기서 oldpat 및 newpat은 마이크로소프트 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

UnxUtilsGNUWin32와 마찬가지로 Win32용으로 sed를 제공합니다.

아무 것도 설치하지 않으려는 경우(다른 컴퓨터에서 실행될 솔루션/프로그램/등에 스크립트를 추가하려는 경우) 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"

이것은 "빌 위버"에서 제공하는 sed 버전과 비슷하지만, 저는 이것이 특별한(' > < / ) 캐릭터에 있어서 더 친근하다고 생각합니다.

그나저나, 제가 이 글을 쓴 것은 아닌데, 어디서 왔는지 기억이 안 나요.

> (Get-content file.txt) | Foreach-Object {$_ -replace "^SourceRegexp$", "DestinationString"} | Set-Content file.txt

이것은 의 행동입니다.

sed -i 's/^SourceRegexp$/DestinationString/g' file.txt

SED의 향상된 버전인 Super Sed가 있습니다.윈도우즈의 경우 명령줄에서 실행되도록 만들어진 독립 실행형 .exe입니다.

파워셸을 시도해 볼 수도 있습니다.사용할 수 있는 get-contentset-content commandlet 빌드가 있습니다.

는 Cygwin을 사용합니다.Cygwin 바이너리를 PATH에 저장하면 Windows Command 셸 내에서 사용할 수 있다는 사실을 모르는 사람들이 많습니다.당신은 Cygwin의 Bash를 실행할 필요가 없습니다.

Microsoft에서 제공하는 Windows Services for Unix(Windows 서비스 for 유닉스)도 확인할 수 있습니다(단, Professional 이상 버전의 Windows에만 해당).

farch.exe 해보세요.이것은 명령 일괄 처리 프로그램에서 사용할 수 있는 텍스트 찾기 및 바꾸기 유틸리티입니다.

http://sourceforge.net/projects/fart-it/

Cygwin(http://www.cygwin.com/) 을 설치하고 거기서 사용할 수 있습니다.

다음과 같은 Windows용 도우미 배치 파일이 있습니다.repl.batSED의 많은 능력을 가지고 있지만,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

대체 링크 - https://www.dostips.com/forum/viewtopic.php?f=3&t=6044

저자는 스택 오버플로 및 dostips.com 의 @dbenham입니다.

라고 하는 다른 도우미 배치 파일findrepl.bat윈도우즈 사용자에게 의 많은 기능을 제공합니다.GREP에 기반을 두고 있습니다.Jscript하이브리드 배치 파일이기도 합니다.repl.bat의 이점을 공유합니다.

다운로드.findrepl출처 - https://www.dropbox.com/s/rfdldmcb6vwi9xc/findrepl.bat

저자는 스택 오버플로의 @aacini와 dostips.com 입니다.

편집 또는 편집

또한 Windows용 Unix 도구와 함께 제공되는 Windows Services for Unix도 있습니다.http://technet.microsoft.com/en-us/interopmigration/bb380242.aspx

업데이트 12/7/12 윈도우즈 2003 R2, 윈도우즈 7 & 서버 2008 등에서는 위의 내용이 추가 기능으로 UNIX 기반 애플리케이션용 서브시스템(SUA)으로 대체되었습니다.하지만 유틸리티를 다운로드해야 합니다. http://www.microsoft.com/en-us/download/details.aspx?id=2391

GNU 도구를 보면 윈도우에 (다른 것들 중에서) 제공합니다.

제가 알기로는 sed와 같은 것은 창문과 함께 번들되어 있지 않습니다.그러나 SED는 Cygwin의 일부, 전체 POSIX 하위 시스템을 원하는 경우, 명령행에서 SED만 실행하려면 Win32 기본 실행 파일을 포함하여 여러 가지 다른 형식으로 Windows에 제공됩니다.

Windows용 Sed(GnuWin32 프로젝트)

Windows(윈도우)에서 기본으로 제공해야 하는 경우 VBScript와 같은 추가 기능 없이 Windows(윈도우)에서 지원하는 스크립트 언어를 사용하는 것이 좋습니다.

Cygwin은 작동하지만 이러한 유틸리티도 사용할 수 있습니다.드라이브에 저장하고 디렉터리를 경로에 저장하기만 하면 많은 유닉스 유틸리티를 사용할 수 있습니다.Cygwin이 만든 경량 IMHO(비록 그것도 잘 작동하지만).

윈도우즈 cmd.exe 프롬프트에 사용할 수 있는 sed 도구가 필요했습니다.Eric Pement의 단일 DOS.exe에 대한 sed 포트는 저에게 매우 적합했습니다.

잘 기록되어 있습니다.

언급URL : https://stackoverflow.com/questions/127318/is-there-any-sed-like-utility-for-cmd-exe

반응형