# If you'd like to omit non-matching lines from the result; add ';d' to the end of the expression.
sed -E 's/(?:\\/\\/(?:\\\n|[^\n])*\n)|(?:\\/\*(?:\n|\r|.)*?\*\\/)|(("|')(?:\\\\|\\\2|\\\n|[^\2])*?\2)/\1/g;t' <<< "// /*
/*
This is a multi line comment
// */
// \" qwe\" dsfdsf \"
// This is a single line comment
char cha1[] = \"This is a string containing a combination //\",
cha2[] = \"This has /* a fake comment */ in it\",
cha3[] = \"This is tuff because of (ignore this //) \
line continueation\",
cha4[] = \"Handle comments in strings with \\" escaped quotes\
and escaped escaped escapes\";
char array[] = \"Handle comments in strings with \\" escaped quotes\
and escaped escaped escapes \\\";
// This is a single line comment \
continuing on the next line
void main()
{
printf(\"Hello world!\");
return 0;
}
"
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for SED, please visit: https://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html