Замена точек (.) В sed

Так что актуальный вопрос: у кого-нибудь есть идея, как удалить специальный символ 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- специальный символ. Использование любого символа ., предлагаемого для поиска, не является хорошей идеей, так как существует риск, что некоторые другие символы будут удалены.

1
задан 3 August 2016 в 11:52

2 ответа

Попробуйте заменить все «.» на «.»

sed -r 's/\. /\./g' -i sed-dots

Но для «...». на "..."

sed -r 's/\. \. \./\.\.\./g' -i sed-dots
0
ответ дан 25 May 2018 в 00:35

Я мог бы использовать ваш файл, когда я его запускал:

tr '\240' ' ' < sed-dots.txt > sed-dots.new

Это работало без шага преобразования:

sed 's/[[:blank:]]\.[[:blank:]]\.[[:blank:]]\./.../g' sed-dots.txt
0
ответ дан 25 May 2018 в 00:35
  • 1
    Это не работает. Я предполагаю, что причина - странный символ M-BM, который @Oli нашел. – Rafal 22 March 2013 в 23:05

Другие вопросы по тегам:

Похожие вопросы: