Сед, чтобы обрезать висячие места

При попытке удалить завершающие пробелы в файле

sed -i "s/[\s]+$//" 171.ExcelSheetColumnNumber.py 

enter image description here

это не сработало, как ожидалось.

Есть ли проблемы с моими командами?

1
задан 28 May 2019 в 12:01

1 ответ

Проблема:

Sed не распознает [\s]+ как последовательность пробельных символов.

Решение:

perl -i -lpe "s/\s+$//" 171.ExcelSheetColumnNumber.py

или:

sed -i -r "s/\s+$//" 171.ExcelSheetColumnNumber.py

или:

sed -i "s/\s\s*$//" 171.ExcelSheetColumnNumber.py

или, согласно стальному приводу Предложение :

sed -i "s/[ \t]*$//" 171.ExcelSheetColumnNumber.py

Объяснение:

  • [\s] означает \ или s для простого sed, и [ 119] означает буквальный +.
  • Снимите квадратные скобки, так как они не нужны в данном конкретном случае.
  • Используйте инструмент, который понимает синтаксис, с которым вы, кажется, знакомы: Perl.
  • В качестве альтернативы, включить расширенные регулярные выражения в sed (по-прежнему не то же самое, что Perl).

    -E, -r, --regexp-extended
        use extended regular expressions in the script (for portability use POSIX -E).
    
  • Или измените ваше выражение, чтобы использовать только те символы, которые распознаются обычным sed: *, а не +.
0
ответ дан 28 May 2019 в 12:01

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

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