Как удалить запаздывание пробела в конце строки в данных файлах (больше чем один)?

Можно установить сценарий для не требования пароля через sudo с, например, следующее в /etc/sudoers:

user   ALL=(ALL:ALL) NOPASSWD: /path/to/your/script
9
10.02.2013, 22:13
3 ответа

Если бесполезным пробелом Вы будете означать запаздывать пробел в конце строки, то это будет работать над системами GNU:

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

(замена *.c чему Ваши исходные файлы соответствуют),

8
27.01.2020, 20:07
  • 1
    я изменил заголовок, большое спасибо за Ваш ответ. Кто-то провалил, потому что, возможно, он думал, что это было столь просто, что никто не должен задавать такой вопрос ;^).Еще раз спасибо. –  Olivier Pons 10.02.2013, 22:14

Это рецидивирующая проблема!

perl -i -pe 's/\s+\n/\n/'  ./*.c

(Это также удаляет \ R \ N ')

Я обычно использую немного более сложную версию «NRS» (без избыточных пробелов):

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

Установите его: CHMOD 755 NRS; CP NRS ~ / bin; (или аналогичный)

и использование: NRS ./*.c

Don Не используйте его в двоичных файлах!

1
27.01.2020, 20:07

Попробуйте Ex-way:

ex +'bufdo!%s/\s\+$//e' -scxa *.*

, чтобы удалить конечные пробелы из всех файлов в текущей папке. Для рекурсии (bash4 / zsh) вы можете использовать новую опцию подстановки ( ** / *. * ).

Примечание. Команда : bufdo не является POSIX .

0
27.01.2020, 20:07

Теги

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