我在目录中有大量的java文件,并且如果他们已经没有它们,则希望在其中插入包声明。我可以用grep完成吗?如果是,请告诉我怎么做?
感谢。
答案 0 :(得分:1)
grep
被正式描述为print lines matching a pattern
。
它是一个过滤器,它不输出任何已经存在的东西(但它可能输出更少)。特别是,它将无法输出缺少的包声明。但是,您可以使用它来测试文件是否具有包声明:
<insert your favorite "for each java file" statement>
if egrep -q "^package " $file; then
<insert command to insert package declaration> $file
fi
<end loop>
你可能正在寻找awk
,虽然perl
也是一个受欢迎的选择。
答案 1 :(得分:1)
尝试:
#!/bin/tcsh
foreach a ( `ls *.java` )
cat ${a} | awk 'BEGIN {P=0} /package/ {P=1} /import/ {if (P == 0) {P=1;print "package X;"}} {print}' > t1
mv t1 ${a}
end
它会查找单词package
和import
如果它在import
之前看到package
,则会打印“包X”。