Eu criei este pequeno arquivo de texto
/* one line comment */
some
multiple
code
here
/*****
multiple
line
comment
*****/
some code http://somelink
some code // some one line comment
Para este pequeno arquivo de teste, este comando funciona para remover todos os comentários que você mencionou
cat comments.txt | sed -n '/^\/\*.*\*\//!p' | sed -n '/ \/\/.*/!p' | sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d'
Este comando está fazendo isso:
-
sed -n '/^\/\*.*\*\//!p'
: remove todos os comentários de uma linha, como/* one line comment */
, do arquivo de teste -
sed -n '/ \/\/.*/!p'
: remove todos os comentários de uma linha, como// some one line comment
, mas mantémhttp://
links. Isso pode ser feito por causa do espaço em branco nesta parte/ \/\/
. Eu acho que você pode mudar isso em/\s\/\/
-
sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d'
: remove todas as linhas de comentários múltiplos, como na amostra, mas mantém o código.