Shell-Script

如何從文件中刪除所有評論?

  • March 18, 2022

我有一個包含評論的文件:

foo
bar
stuff
#Do not show this...
morestuff
evenmorestuff#Or this

我想列印文件而不包括任何評論:

foo
bar
stuff
morestuff
evenmorestuff

有很多應用程序會有所幫助。有什麼好的方法嗎?

刪除所有評論的一種方法是使用grepwith-o選項:

grep -o '^[^#]*' file

在哪裡

  • -o: 只列印匹配的部分
  • first ^: 行首
  • [^#]*``#: 除了重複零次或多次以外的任何字元

請注意,空行也將被刪除,但只有空格的行將保留。

我相信sed在這方面可以做得比grep. 像這樣的東西:

sed '/^[[:blank:]]*#/d;s/#.*//' your_file

解釋

  • sed預設情況下,將逐行查看您的文件並在可能應用引號中的轉換後列印每一行。(sed '' your_file將只列印所有未更改的行)。
  • 在這裡,我們給出sed了在每一行上執行的兩個命令(它們用分號分隔)。
  • 第一條命令說:/^[[:blank:]]*#/d. 在英語中,這意味著如果該行在其開頭匹配一個雜湊(前面有任意數量的前導空格),則刪除該行(它不會被列印)。
  • 第二個命令是:s/#.*//. 在英語中,用一個雜湊標記替換你能找到的盡可能多的東西(直到行尾,也就是說)什麼都沒有(最後兩個之間沒有空格//)。
  • 總之,這將貫穿您的文件刪除完全由註釋組成的行,並且在此之後留下的任何行都會將註釋從它們中刪除。

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