Shell-Script
如何從文件中刪除所有評論?
我有一個包含評論的文件:
foo bar stuff #Do not show this... morestuff evenmorestuff#Or this
我想列印文件而不包括任何評論:
foo bar stuff morestuff evenmorestuff
有很多應用程序會有所幫助。有什麼好的方法嗎?
刪除所有評論的一種方法是使用
grep
with-o
選項:grep -o '^[^#]*' file
在哪裡
-o
: 只列印匹配的部分行- first
^
: 行首[^#]*``#
: 除了重複零次或多次以外的任何字元請注意,空行也將被刪除,但只有空格的行將保留。
我相信
sed
在這方面可以做得比grep
. 像這樣的東西:sed '/^[[:blank:]]*#/d;s/#.*//' your_file
解釋
sed
預設情況下,將逐行查看您的文件並在可能應用引號中的轉換後列印每一行。(sed '' your_file
將只列印所有未更改的行)。- 在這裡,我們給出
sed
了在每一行上執行的兩個命令(它們用分號分隔)。- 第一條命令說:
/^[[:blank:]]*#/d
. 在英語中,這意味著如果該行在其開頭匹配一個雜湊(前面有任意數量的前導空格),則刪除該行(它不會被列印)。- 第二個命令是:
s/#.*//
. 在英語中,用一個雜湊標記替換你能找到的盡可能多的東西(直到行尾,也就是說)什麼都沒有(最後兩個之間沒有空格//
)。- 總之,這將貫穿您的文件刪除完全由註釋組成的行,並且在此之後留下的任何行都會將註釋從它們中刪除。