sed命令查找仅匹配模式的行

时间:2016-09-24 07:30:18

标签: unix sed command

请使用sed建议我使用sed查找只有匹配字符串的行。

/* a comment line in a C program */
#include <stdio.h>  /* including the libraries */
int main()
{
int n, i, flag = 0; /* assigning the values */

printf("Enter a positive integer: ");
scanf("%d",&n);

for(i=2; i<=n/2; ++i)
{
   /* condition for nonprime number */
    if(n%i==0)
    {
        flag=1;
        break;
    }
}

if (flag==0)
    printf("%d is a prime number.",n);
else
    printf("%d is not a prime number.",n);

return 0; /* returns 0 */
}

在上面的文本中,我想删除没有任何前导或尾随文本(OR)的唯一注释行我想删除不在可执行语句之前或之后的注释。

我使用了sed 's_\(/*\)\(.*\)\(*/\)_''_g' input,但删除了所有评论

请建议适当的命令

1 个答案:

答案 0 :(得分:1)

试试这个:

sed '/^[ \t]*\/\*.*\*\/[ \t]*$/d' file

删除所有只有潜在前导或尾随空格的注释行。

<强>解释

d(删除)命令应用于行:

  • ^[ \t]*:从零个或多个空格或标签开始
  • \/\*.*\*\/:其后是评论。 /**/已在此处转义
  • [ \t]*$:以零或多个空格或标签结尾

修改

在第二个字符范围内删除了额外的^