2012-02-16 7 views
11
나는이 문자열이 UNIX

변경 문자열 문자 X

에 간단한 문자열 조작을 수행하는 방법 오랜 시간 동안 검색하고 있습니다

:

theStr='...............' 

를 내가 5 번째 문자를 변경해야 A로 어떻게 할 수 있습니까?

다음, 처음 네 문자를 C#에서 우아한인지 모르겠어요이 theStr[4] = 'A'; // Zero based index.

답변

27

당신은 sed, 스트림 라인 편집기를 사용하여이를 달성 할 수

echo $theStr | sed s/./A/5

먼저 당신이 파이프 $ theStr의 출력이 나오지하기 위해, A로 다섯 번째 문자를 대체

+0

+1. 실제로 sed는 올바른 도구입니다. 부가 메모에서이 특정 버전은 입력 문자열이 '.' – CodeExpress

+2

아니요, 실제로'.'는 문자 "도트"를 나타내지 않지만 모든 문자와 일치합니다. 그 점과 일치시키고 싶으면'\. '이라고 쓸 것입니다. – jurgemaister

+0

하하, 내가 그것을 썼을 때 전혀 몰랐다. 이것은 완벽합니다! – CodeExpress

3

같은 일, 또는 당신이 필요로하는 배쉬의 버전 만

theStr="${theStr:0:4}A${theStr:5}" 

첫 번째 부분은 반환 문자 'A'와 6 일 여기

9
a="............" 
b="${a:0:4}A${a:5}" 
echo ${b} 

로 시작하는 모든 문자는 일에 tutorial 정말 좋은 일입니다 반지 조작.

0
[email protected]:~$ echo 'replace A please' | sed 's/^\(.\{8\}\).\(.*\)/\1B\2/' 
replace B please 

위의 sed 명령은 8th 문자 을 대체합니다. 따라서은 무엇인지 지정하지 않으므로 어떤 ch aracter는 교체되어야한다. 당신이 위의 코드에서

그냥 당신이로 교체하고 싶은 캐릭터와

  • B를 원하는 문자 위치로

    • (8)를 교체해야!

    그래서 특정 예를 들어이된다 :

    [email protected]:~$ echo '...............' | sed 's/^\(.\{4\}\).\(.*\)/\1A\2/' 
    ....A.......... 
    

    대신 B의 문자열을 제공하여 문자열을 가진 대체 할 수 있음을 언급하거나 B가 어디 있는지 아무것도 제공하지하여 삭제하지 않기 (\1\2)