嘿所以讓我們說你有一個字符串「aabbaabbbaab」。正如你所看到的,你有3塊「b」。例如,我如何刪除第二塊b,所以「bbb」?它應該將字符串變成:「aabbaaaab」。我嘗試過尋找無處不在,但我不能爲我的具體問題想出正確的語法。我需要在純bash中做到這一點,所以沒有awk,sed等。刪除純bash中的某個字符的塊
1
A
回答
1
這裏是純粹的bash:它遍歷字符串逐個字符。當它檢測到它在指定字符的第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. Mysql刪除某個字符
- 4. 如何從某個位置的字符串中刪除字符?
- 5. 刪除python中的長字符串中的某些字符
- 6. 從Bash中的字符串中刪除所有特殊字符
- 7. 一切都很刪除某個字符
- 8. R刪除某個字符中的特定字詞,如:
- 9. 刪除Tcl中的字符串中的某個字符後的所有內容
- 10. 從文件bash中刪除字符串
- 11. Perl:遇到某個字符後刪除其餘的字符串
- 12. 使用preg_replace刪除某個字符周圍的空白字符
- 13. 刪除某個字符後的字符串?
- 14. 從R中的字符串中刪除某些字符
- 15. 如何刪除java中的某個字符前的數據
- 16. 如何刪除Bash中的最後一個字符?
- 17. 從java中的文本文件中刪除某個字符
- 18. 刪除大塊字符串
- 19. 刪除字符串中的某些字符,Java
- 20. 刪除字符串中的某些字符
- 21. 刪除Python中某些字符後的字符串部分
- 22. 從列表中刪除某些字符
- 23. 刪除某些字符在Excel 2010中
- 24. 從vb6中的字符串的右側和左側刪除某個字符(TrimChar)
- 25. 如何刪除經典asp中某個字符串中的字符?
- 26. 在Python中刪除某個文件名的字符模式
- 27. Javascript - 刪除元素中的某個字符
- 28. Bash - 替換或刪除字符串bash中的第一個出現
- 29. 刪除某個符號後的字符串SQlite
- 30. 從文件中刪除單個字 - bash
萬一你改變主意了 「沒有的sed」 的要求,這裏是我的GNU sed的回答是:'sed的「S/B \ + // 2'' – Aaron
@亞倫嘿,如果我最終無法弄清楚如何做到這一點沒有sed我會用你的方法謝謝。 – foobarbaz
爲什麼沒有sed或awk?這些是POSIX工具,並且在BASH出現的任何地方都有99.999%可能存在。 – dawg