Поэтому актуальный вопрос: есть ли у кого-нибудь идея, как удалить M-BM-
специальный символ, не рискуя потерять другие символы?
У меня есть строка текста:
" . . ."
это
space dot space dot space dot
Я пытаюсь заменить все вхождения этой строки в текстовом файле на
"..."
это
dot dot dot
Я пытался сделать с помощью sed:
sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
К сожалению, это не меняет входной файл даже немного. Файл: https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots
Когда я пытаюсь заменить строку в текстовом редакторе (я использую geany), она обнаруживается и заменяется правильно.
Единственная причина, по которой я могу думать, состоит в том, что некоторые (или все) из этих пробелов на самом деле не пробелы, а какой-то особый символ.
Кто-нибудь есть идеи, как найти и заменить эту строку с Sed (или любой другой инструмент командной строки)? Пожалуйста, проверьте свою идею в моем файле, так как проблема не так очевидна, как может показаться - вот почему я спросил об этом.
После использования cat -A
myfile кажется, что эти пробелы не пробелы, а M-BM-
специальный символ. Использование любого символа, .
предложенного для поиска, не очень хорошая идея, так как есть риск, что некоторые другие символы будут удалены.
источник
echo
вместо catting файл, по крайней мере, когда вы cat cat файл, вы знаете, что оболочка ничего не интерпретирует, и ни один не эхо.cat
- простоsed
загрузите файл (в соответствии с примером OP), но не сохраняйте встроенный файл (удалите-i
, чтобы вы могли увидеть и проверить результаты).cat -A sed-dots
то увидите, что «пробелы» между точками - это специальныеM-BM-
символы ... Не знаю, как они туда попали, но их нужно заменить. Если вы не можете точно нацелить их, это работает:sed -r 's/(\s\..\..\.)/ dot dot dot/ig' sed-dots
Попробуйте следующее, чтобы заменить все "." На "."
Но для ". . ." на "..."
источник
Я мог бы использовать ваш файл, когда пробежал по нему:
Это работало без шага преобразования:
источник