Так что актуальный вопрос: у кого-нибудь есть идея, как удалить специальный символ M-BM-, не рискуя потерять другие символы?
У меня есть строка текста:
" . . ."
[d3 ], который является space dot space dot space dot
Я пытаюсь заменить все появление этой строки в текстовом файле на
"..."
, который является
dot dot dot
I пытался сделать с sed:
sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
К сожалению, он не меняет входной файл даже немного. Файл: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots
Когда я пытаюсь выполнить замену той же строки в текстовом редакторе (я использую geany), она будет найдена и заменена должным образом. [ ! d9]
Единственная причина, по которой я могу думать, состоит в том, что некоторые (или все) из этих пространств - это не просто пробелы, а некоторый специальный символ.
Кто-нибудь знает, как найти и заменить эту строку с sed (или любым другим инструментом командной строки)? Пожалуйста, проверьте свою идею в моем файле, поскольку проблема не так очевидна, как может показаться, - вот почему я спросил об этом.
После использования cat -A myfile кажется проблемой, что эти пробелы не являются пробелы, но M-BM- специальный символ. Использование любого символа ., предлагаемого для поиска, не является хорошей идеей, так как существует риск, что некоторые другие символы будут удалены.
Попробуйте заменить все «.» на «.»
sed -r 's/\. /\./g' -i sed-dots
Но для «...». на "..."
sed -r 's/\. \. \./\.\.\./g' -i sed-dots
Я мог бы использовать ваш файл, когда я его запускал:
tr '\240' ' ' < sed-dots.txt > sed-dots.new
Это работало без шага преобразования:
sed 's/[[:blank:]]\.[[:blank:]]\.[[:blank:]]\./.../g' sed-dots.txt