从文本文件中删除注释行

时间:2018-09-19 05:31:21

标签: linux shell unix command

我有一个文本文件,其中包含以下文本。

/* a comment line in a C program */
 printf("It is /* NOT a comment line */\n");
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */
 /* another weird line, but not a comment line */ y = 0;

我想仅使用linux命令删除以/*开头和以*/结尾的行。

我编写了以下代码。

egrep "^/*.+*/$" small.txt

我将文本保存在small.txt文件中。

但是它输出仅以*/结尾的所有行。

输出如下。

/* a comment line in a C program */
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */

我想要的输出是

/* a comment line in a C program */

2 个答案:

答案 0 :(得分:3)

您可以使用此sed删除注释行:

sed '\~^/\*.*\*/$~d' file.c

或使用grep

grep -v '^/\*.*\*/$' file.c

 printf("It is /* NOT a comment line */\n");
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */
 /* another weird line, but not a comment line */ y = 0;

仅打印匹配行:

sed '\~^/\*.*\*/$~!d' file.c

或使用grep

grep '^/\*.*\*/$' file.c

/* a comment line in a C program */

答案 1 :(得分:0)

因此,首先我们将按照以下步骤删除空格和制表符。

sed "s/^[ \t]*//" -i small.txt

这会将 small.txt 替换为其中删除了前导空格和制表符的。

我们将运行以下命令来提取评论。

grep  '^/\*.*\*/$' small.txt