Как определить и удалить невидимые пробельные символы на gedit?

Этот ответ применяется, по крайней мере, к GNU, находят.

-name соответствия с помощью шаблонов оболочки, если Вы хотите сделать regex соответствие использованию -regex вместо этого:

 find . -regex '.*ook[s]?' -type f

-regex соответствует целому пути с помощью emacs regex. Тип регулярного выражения может быть изменен с -regextype.

3
14.12.2013, 06:06
3 ответа

Не удивляйтесь что Ваш regexps с a \n не соответствуйте: \n разделитель строки, это не находится в строке. Каждая строка в Вашем файле заканчивается \n- по определению.* Вы никогда не будете находить a \n в строке.

Одна возможность состоит в том, что Вы смотрите на файл Windows на Unix, и Ваш таинственный символ \r (NB нет \r\n), который Ваш grep не распознает как часть EOL.

Для обнаружения, на что на самом деле похожи строки использовать od -c.

*Сноска для педантов: Кроме возможно для заключительной строки, и в очень старых системах Mac OS, и т.д., и т.д.

1
27.01.2020, 21:16
  • 1
    Да, Вы поражаете мишень. Действительно, grep имеет ошибочный \r\n как пробел. Я просто не понимаю как \r\n вошедший мой файл CSS, вызывая gedit для использования этого для всех новых строк, я создал только для этого файла. –  Question Overflow 15.12.2013, 05:17

Вместо того, чтобы пытаться сделать это с grep Вы могли бы хотеть использовать формальный инструмент минификации. Существуют многие. Один такой инструмент cssmin. Это - порт YUI-компрессора Yahoo. Это находится в репозиториях большинства главных дистрибутивов.

Fedora

$ sudo yum install python-cssmin

Пример выполняется

$ cssmin < doc.css  > doc_compressed.css

$ ls -l | grep css
-rw-rw-r--.   1 saml saml     2723 Dec 13 23:35 doc_compressed.css
-rw-r--r--.   1 saml saml     4626 Dec 13 23:34 doc.css

Содержание файла похоже так:

$ head doc_compressed.css 
a:link{text-decoration:none}a:visited{color:#7F7FFF;text-decoration:none}a:hover{text-decoration:underline}a:active{color:white;background-color:blue;text-decoration:underline}body{background-color:white;color:black;font-size:100.01%}img{display:block;border-width:0}h1{background-color:#900;font-size:x-large;font-weight:bold;color:#ebebeb;padding:.3em 5px .5em 5px;m....

Компрессоры

Существует много других вариантов, если этот не удовлетворяет Вашим потребностям. Смотрите на это сообщение AskUbuntu, названное: Уменьшите инструмент, который может быть выполнен через терминал.

Также поиск "CSS уменьшает" или "CSS, который уменьшают JS", поднимет много вариантов.

Идентификация странных символов

Существует несколько инструментов, которые Вы могли использовать, чтобы сделать это. Восьмеричный дамп (od) или hexdump для начинающих. Я пошел бы с hexdump.

Пример

$ head -10 doc.css | hexdump -C
00000000  0a 2f 2a 20 47 6c 6f 62  61 6c 20 73 74 79 6c 65  |./* Global style|
00000010  73 2e 20 2a 2f 0a 0a 61  3a 6c 69 6e 6b 20 7b 0a  |s. */..a:link {.|
00000020  20 20 74 65 78 74 2d 64  65 63 6f 72 61 74 69 6f  |  text-decoratio|
00000030  6e 3a 20 6e 6f 6e 65 3b  20 20 20 20 20 20 0a 7d  |n: none;      .}|
00000040  0a 0a 61 3a 76 69 73 69  74 65 64 20 7b 0a 20 20  |..a:visited {.  |
00000050  63 6f 6c 6f 72 3a 20 23  37 46 37 46 46 46 3b 0a  |color: #7F7FFF;.|
00000060  20 20 74 65 78 74 2d 64  65 63 6f 72 61 74 69 6f  |  text-decoratio|
00000070  6e 3a 20 6e 6f 6e 65 3b  20 20 20 20 0a           |n: none;    .|
0000007d

В вышеупомянутом выводе точки в конце этих строк являются пробелами:

$ head -10 doc.css 

/* Global styles. */

a:link {
  text-decoration: none;      
}

a:visited {
  color: #7F7FFF;
  text-decoration: none;    

Например:

00000030  6e 3a 20 6e 6f 6e 65 3b  20 20 20 20 20 20 0a 7d  |n: none;      .}|

Пробелы являются шестнадцатеричными символами "0x20". "0x0a" является символом новой строки.

3
27.01.2020, 21:16
  • 1
    Спасибо за hexdump метод! Тайна на самом деле вызывается 0d 0a который является \r\n, но по ошибке идентифицированный как пробел grep. Я просто не знаю, как это вошло в файл. Каждая новая строка \r\n вместо просто \n. –  Question Overflow 15.12.2013, 05:12
  • 2
    @QuestionOverflow - довольный Вы разрешили проблему. Да они могут протечь в странными способами. Я обычно получаю их от других разработчиков, которые касаются кодовой базы. Мы устанавливаем или репозиторий Подверсии для пропускания их от утечки в нашу разработку по этой точной причине. –  slm♦ 15.12.2013, 05:34

Можно использовать tr команда для того, чтобы сделать это, например, cat file | tr -d "\t" > newfile это удалит вкладки на Вашем файле.

перейдите по этой ссылке для получения дополнительной информации об инструменте TR.man tr не будет очень полезный для меня

Некоторая интересная часть enter image description here

1
27.01.2020, 21:16
  • 1
    я не говорю о вкладке \t который тривиален для удаления. Именно другие невидимые пробельные символы у меня есть проблема при идентификации и удалении. –  Question Overflow 14.12.2013, 07:11
  • 2
    , который я даю up.i, перевел только пробелы и вкладки, поскольку пробелу перешли по Вам, что ссылка может быть, это поможет. –   14.12.2013, 07:17

Теги

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