вставить текст, используя grep - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть куча java-файлов в каталоге, и я хочу вставить в них объявление пакета, если у них их уже нет. Могу ли я сделать это с помощью grep? и если да, скажите, пожалуйста, как?

спасибо.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Попробуйте:

#!/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».

1 голос
/ 15 декабря 2011

Нет, вы не можете. 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 также является популярным выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...