2

我正在寻找一个 bash one-liner 来打印包含版权信息的源文件顶部的注释。在这些示例上调用命令应该会产生所描述的输出。

/*
 * copyright 2004
 */
package Foo
...

应该打印前三行

/* copyright 2004 */
package Foo
...

应该打印第一行

package Foo
/* some other comment */
...

不应该打印任何东西

我认为在 perl 或 awk 中应该很容易做到,但我似乎无法让它工作。

4

1 回答 1

2

此 awk 命令似乎适用于给定的输入,但对于一般用途而言,它可能不够可靠:

awk 'NR==1&&/^\/\*/{s=1}s==1{print $0}s==1&&$NF=="*/"{s=0}' test.c

为了打印输出,第一行应以 开头/*,它将打印所有行,直到到达以 结尾的行*/

更新:为了/*在文件开头使用空白行和之前的空格,我们可以使用这个命令。

 awk 'NF==0&&s==0{NR=0}NR==1&&$1=="/*"{s=1}s==1{print $0}$NF=="*/"{s=2}' test.c
于 2013-06-16T11:23:18.653 回答