이전 게시물을 보려고 했지만 답변을 얻지 못했습니다. 미리 감사드립니다! 동일한 패턴을 가진 일부 파일 indisei 라인이 있고 특정 문자열 다음에 다음 [mau] 중 하나를 "A"로 바꾸고 싶습니다. n=22 string="abnt7777/knowthis" charchange "m"
abnt7777/알지만 모른다 CAHRACTERSmRESTOFSTRING
내가 아는 것은 첫 번째 문자열 "abnt7777/knowthis"뿐이고 "abnt7777/knowthis"와 a 사이에 몇 개의 문자가 있는지도 알고 있습니다. 변경 후 문자 수는 22입니다.
abnt7777/knowthis모름CAHRACTERSARESTOFSTRING
답변1
echo "abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING" | sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#'
인쇄
abnt7777/knowthisDONTKNOWWICHCAHRACTERSARESTOFSTRING
이 sed
명령은 abnt7777/knowthis
뒤에 22개의 문자를 검색합니다 m
. 를 제외한 모든 문자가 m
합계에 포함되어 그룹 1로 캡처됩니다 \(
. \)
일치하는 문자열은 그룹 1( \1
) 다음에 로 대체됩니다 A
. 줄의 다른 모든 부분은 변경되지 않습니다.
파일 내용 내에서 문자열을 바꾸려면 다음과 같은 것을 사용하십시오.
sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#' inputfile > outputfile
참고: 실제 입력 모드가 다른 것이라면 abnt7777/knowthis
여기에 가 포함되어 있는지 확인해야 합니다 sed
.
답변2
변수 확장의 경우 올바르게 이해하면 다음과 같습니다.
foo="abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING"
echo ${foo:0:39}A${foo:40}
산출:
abnt7777/knowthis 알 수 없는 문자ㅏ나머지 문자열 #^ 39 위치(17 abnt7777/knowthis + 22)