Gedit

如何在 gedit 上辨識和刪除不可見的空白字元?

  • December 15, 2013

我想刪除我的 css 文件中不必要的空格。我正在使用帶有以下命令的 grep:

$ grep -rn "[[:space:]]$"

令人驚訝的是,它在文件中的每一行都返回了一個命中。我搜尋 的實例\t\n\r\n\n找不到任何東西。如何辨識不可見的空白並將其刪除?

不要驚訝於您的正則表達式與 a\n不匹配: The\n是行分隔符,它不在行中根據定義,文件中的每一行都以\n– 結尾。* 你永遠不會\n在一行中找到一個。

一種可能性是您正在查看 Unix 上的 Windows 文件,而您的神秘角色是\r(NB not \r\n ),您的 grep 沒有將其辨識為 EOL 的一部分。

要了解您的線條的實際外觀,請使用od -c.

*吹毛求疵者的腳註:可能除了最後一行,以及非常舊的 Mac OS 系統等,等等。

與其嘗試這樣做,不如grep使用正式的迷你小說工具。有許多。一種這樣的工具是cssmin. 這是雅虎 YUI 壓縮器的一個埠。它位於大多數主要發行版的儲存庫中。

軟呢帽

$ 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 minify”或“CSS JS minify”也會有很多選擇。

辨識奇怪的字元

您可以使用多種工具來執行此操作。八進制轉儲 ( 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”是換行符。

引用自:https://unix.stackexchange.com/questions/105122