C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe
으로 교체하고 싶습니다
C:\Documents and Settings\USERNAME\AppData\Local\Microsoft\Teams\current\Squirrel.exe
.
echo "C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe" | \
sed -e 's/\\Documents and Settings\\*\\/\\Documents and Settings\\USERNAME\\/'
밝혀지다
C:\Documents and Settings\USERNAME\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe
하지만
echo "C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe" | \
sed -e 's/\\Documents and Settings\\.*\\/\\Documents and Settings\\USERNAME\\/'
반품
C:\Documents and Settings\USERNAME\Squirrel.exe
어떤 아이디어가 있나요?
답변1
귀하가 요구하는 내용을 이해한다면 "sjohnson4"를 사용자 이름으로 바꾸면 도움이 될 것입니다.
sed 's/sjohnson4/USERNAME/'
이것은 sjohnson4를 검색하고 대체합니다. 이것이 필요한 것이 아니라면 알려 주시기 바랍니다.
제이슨 C.
답변2
백슬래시( \
)를 필드 구분 기호로 사용하면 다음 코드는 무조건 awk
세 번째 필드를 문자열로 바꿉니다 USERNAME
.
awk -F '\' 'BEGIN { OFS = FS } { $3 = "USERNAME"; print }'
시험:
$ printf '%s\n' 'C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe' | awk -F '\' 'BEGIN { OFS = FS } { $3 = "USERNAME"; print }'
C:\Documents and Settings\USERNAME\AppData\Local\Microsoft\Teams\current\Squirrel.exe
위와 비슷한 방법을 사용하십시오 sed
.
sed 's/[^\]*\\/USERNAME\\/3'
[^\]*\\
이는 세 번째 발생(백슬래시가 아닌 임의의 개수 뒤에 백슬래시가 오는 경우)을 문자열로 대체합니다 USERNAME\
.
시험:
$ printf '%s\n' 'C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe' | sed 's/[^\]*\\/USERNAME\\/3'
C:\Documents and Settings\USERNAME\AppData\Local\Microsoft\Teams\current\Squirrel.exe
답변3
"사용자 이름"과 일치시키려는 경우
sed -E "s,(^.+and Settings\\\)[A-Za-z0-9]+(\\\AppData.+$),\1USERNAME\2,"
예:
$ echo "C:\Documents and Settings\ThisIsAnotherUsername15\AppData\Local\Microsoft\Teams\current\Squirrel.exe" | sed -E "s,(^.+and Settings\\\)[A-Za-z0-9]+(\\\AppData.+$),\1USERNAME\2,"
C:\Documents and Settings\USERNAME\AppData\Local\Microsoft\Teams\current\Squirrel.exe
답변4
스크립트를 수정하려면 최소한의 변경만 하면 됩니다.
$ echo 'C:\Documents and Settings\sjohnson4\AppData\Local\Microsoft\Teams\current\Squirrel.exe' |
sed 's/\(\\Documents and Settings\\\)[^\\]*/\1USERNAME/'
C:\Documents and Settings\USERNAME\AppData\Local\Microsoft\Teams\current\Squirrel.exe