2011-12-15 5 views
0

ディレクトリにJavaファイルがたくさんあり、すでにそれらがない場合はパッケージ宣言を挿入したいと思います。私はgrepでそれを達成できますか?はいの場合はどのように教えてください?grepを使用してテキストを挿入します

ありがとうございました。

+1

いいえ、他のツールのいずれかが必要です。 sed/awkなど –

+0

Grepは、パッケージ宣言がないファイルを識別するのに役立ちます( '-l'スイッチを参照してください。このスイッチは正規表現に一致するファイル名のみをリストします)。あなたはおそらく、 '$ for in grep -l" expression "*"のようなものを使って、sedを使ってファイルを修正することができます。 $ sを変更するためにsed -i "コマンドを実行してください";完了しました。 –

答えて

1

いいえ、できません。 grepは、公式にはprint lines matching a patternと記載されています。

フィルタの場合は、まだ出力されていないものは出力されません(ただし出力は少なくなることがあります)。特に、が不明なパッケージ宣言を出力することはできません。ただし、ファイルがパッケージ宣言を持っているかどうかをテストするためにそれを使用することができます:perlも人気がありますが、

<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を探しています。

+0

ありがとう、私はチェックします – George

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 

それは言葉packageimportを探します。
packageの前にimportと表示されている場合は、「パッケージX」が印刷されます。

関連する問題