Unix: Как проверить существование тега в начале каждого файла перед вставкой?

Вопрос связан с вопросом "Unix: Добавить Тег к началу каждого файла?".

Как я могу поместить тег только в файлы, которые не содержат тег, такой как <?php, уже?

0
задан 20.03.2017, 12:17

3 ответа

head -n1 file | grep -q "^<?php" || sed -i "1s/^/<?php /" file
1
ответ дан 24.11.2019, 04:45

Соответственно измененная версия моего ответа на исходный вопрос:

perl -0777 -p -i -e 's/^/<?php/g unless m/^<\?php/' testfile

Выполнение этой команды с -i.bak вместо -i сохранит резервное копирование исходных файлов с .bak расширением.

Править: Обновленный соответствие от m/<?php/ кому: m/^<\?php/ заставить его соответствовать только началу файла и выйти ? символ.

2
ответ дан 24.11.2019, 04:45

Вы хотите || (ИЛИ). Если левая рука будет верна, то она не обеспокоится правой рукой. например.

test "$(grep PATTERN FILE)" || sed COMMAND FILE
0
ответ дан 24.11.2019, 04:45
  • 1
    test $( ) часть здесь не нужна, и даже повреждает целый тест. grep -q blah || достаточно. – grawity 06.09.2009, 23:33

Теги

Похожие вопросы