안녕하세요. 그래서 "aabbaabbbaab"이라는 문자열이 있다고 가정 해 보겠습니다. 보시다시피 3 블록의 "b"가 있습니다. 예를 들어, b 블록의 두 번째 블록을 제거하려면 어떻게해야합니까? "bbb"? 문자열을 "aabbaaaab"로 바꿔야합니다. 나는 사방을 보려고 노력했다. 그러나 나는 단지 나의 특정한 질문을위한 올바른 구문을 생각할 수 없었다.순수한 bash에서 특정 문자 블록을 제거 하시겠습니까?
1
A
답변
1
다음은 순수한 bash입니다. 문자를 기준으로 문자열을 반복합니다. 지정된 char의 n 번째 블록에 있음을 감지하면 여기까지 전체 문자열이 우리가 원하는 출력의 첫 번째 부분입니다. n 번째 블록의 끝까지 가면 나머지 문자열이 필요하다는 것을 알 수 있습니다.
remove_nth_block() {
local str=$1 char=$2 n=$3
local i count=0 prev prefix
for ((i=0; i<${#str}; i++)); do
if [[ ${str:i:1} = $char && $prev != $char ]]; then
((++count == n)) && prefix=${str:0:i}
else
if [[ ${str:i:1} != $char && $prev = $char && $count -eq $n ]]; then
echo "$prefix${str:i}"
return
fi
fi
prev=${str:i:1}
done
}
그런
여기에서 "전혀 나오지도"요구 사항에 대한 당신의 마음을 바꿀 경우$ remove_nth_block aabbaabbbaab b 2
aabbaaaab
$ remove_nth_block aabbaabbbaab a 2
aabbbbbaab
+0
축하해, 나는 비슷한 해결책을 시도하고 좌절감에 버렸다. 'bash'는 다양한 도구 상자가 없으면 훌륭한 언어가 아닙니다. – Aaron
+0
그리고 정말 느립니다. –
1
관련 문제
- 1. Bash 문자열 특정 문자 제거
- 2. 특정 문자 뒤에 문자열을 제거 하시겠습니까?
- 3. 문자열에서 특정 문자 제거
- 4. 문자열에서 특정 문자 제거
- 5. NSString에서 특정 문자 제거
- 6. 문자열의 특정 문자 제거
- 7. 문자열에서 특정 문자 제거
- 8. 컬링 후 Bash에서 슬래시를 제거 하시겠습니까?
- 9. 특정 수의 문자 다음에 bash에서 문자열을 분할해야합니다.
- 10. 특정 문자 다음의 모든 문자 제거
- 11. 동적 제목의 특정 문자 뒤의 문자 제거
- 12. 엑셀 특정 문자 후 제거
- 13. 메모장에서 특정 줄의 문자 제거 ++
- 14. 파일 이름에서 특정 문자 제거
- 15. 텍스트에서 특정 특수 문자 제거
- 16. 문자열의 특정 문자 제거 R
- 17. 파일 집합에서 특정 문자 제거
- 18. 문자열에서 특정 html 문자 제거
- 19. 셀의 문자열에서 특정 문자 제거
- 20. 특정 하위 문자열까지 문자 제거
- 21. Matlab 문자열에서 특정 문자 제거
- 22. bash에서 임의의 문자 생성
- 23. 문자 배열에서 문자 제거
- 24. Ruby 블록을 특정 OS 사용자로 실행 하시겠습니까?
- 25. 지도에서 특정 마커를 제거 하시겠습니까?
- 26. 배열에서 특정 요소를 제거 하시겠습니까?
- 27. 캐시에서 특정 이미지를 제거 하시겠습니까?
- 28. html에서 특정 링크를 제거 하시겠습니까?
- 29. bash에서 변수를 복제 하시겠습니까?
- 30. 반복 문자 제거
내 GNU이 나오지 된 대답 : ''S/B \ + // 2'' – Aaron
을 나오지 @ Aaron Hey 만약 내가 결국 sed없이 이것을하는 방법을 이해할 수 없다면 당신의 접근 감사를 사용할 것입니다. – foobarbaz
왜 sed 또는 awk가 없습니까? 이것들은 POSIX 툴이며 BASH가 존재하는 곳에서는 99.999 %가 존재할 것입니다. – dawg