我有一个文本文件,其中包含以下文本。
/* 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 */
答案 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