как проверить появление 3 строк в файле

К сожалению, переименование означает разные вещи в разных версиях Unix. В частности, в Fedora и, следовательно, CentOS, я полагаю, rename будет принимать только простые строки, а не выражение perl, которое вы используете (которое будет работать в debian).

Однако, похоже, все, что вам нужно сделать, это добавить «-img4sm». перед суффиксами .jpg, .png и .gif, поэтому с вашей версией переименования попробуйте:

rename -- .jpg -img4sm.jpg *.jpg
rename -- .png -img4sm.png *.png
rename -- .gif -img4sm.gif *.gif

Всегда копируйте куда-нибудь свой каталог в качестве резервной копии на случай, если эти команды не работают так, как вы ожидаете.


При желании вы можете установить более сложный perl скрипт переименовать из cpan с помощью команды cpan , если вы уже знаете это, или просто загрузив ссылку на этой странице на tar для загрузки . Распакуйте tar и «соберите» скрипт с

tar xf rename-1.9.tar.gz
cd rename-1.9
perl Makefile.PL 
make
mv bin/rename ~/bin/prename

, где последний mv находится в некотором частном каталоге bin в вашем PATH. Используйте имя prename , чтобы избежать путаницы с уже имеющейся у вас командой переименования. Затем вы можете использовать это для выполнения своих действий, например:

prename -n  's/\.(jpg|png|gif)$/-mg4sm.$1/' -- *.{jpg,gif,png}

где здесь -n означает просто показать, что произойдет, не делая этого.

1
19.02.2018, 02:41
2 ответа

Awksolución (para orden estricto y formato de líneas de patrones cruciales):

awk 'NF == 1{ 
         if (f) { 
             if (NR-n == 1 && $1 == "{")
                 r = r ORS $0;
             else if (NR-n == 2 && $0 ~ /[a-zA-Z]+/)
                 print "OK" ORS r ORS $0; 
         }
         if ($1 == "/var/log/report") { 
             f = 1; n = NR; r = $0 
         }
     }n && NR-n > 2{ f = 0 }' file

La salida:

OK
    /var/log/report
    {
    fkergfve
OK
    /var/log/report
    {
     kfreve
OK
    /var/log/report
    {
    jdhe
1
27.01.2020, 23:44

solución gnu sed

sed '
\#[[:blank:]]*/var/log/report#!d
N
/\n[[:blank:]]*{$/!d
N
/\n[[:blank:]]*[A-Za-z]*$/!d
s/.*/OK\n&/
' infile
0
27.01.2020, 23:44

Теги

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