bash с использованием grep и sed

bash с использованием grep и sed

Это для нашей еженедельной практики, без оценок и замечаний (мы даже не получаем ответы!)

Я был бы очень признателен, если бы кто-нибудь нашел время, чтобы помочь мне объяснить это упражнение, так как я пытаюсь сделать эту работу за выходные и не смогу получить помощь от своего репетитора до следующей недели. Я много читал и работал над программированием на bash, регулярными выражениями и grep. Но код ниже просто сбил меня с толку.

Мне даже интересно, инструкция неполная или я просто не понимаю?

В частности, следующее мешает мне понять все это:

NAMES=`ls *.$1`

filed=$(file:$1).$2

Упражнение 4.3
Предположим, что вам дан текстовый файл (называемый myfile), содержащий следующее:

#!/bin/bash

NAMES=`ls *.$1`

for file in $NAMES; do
    filed=$(file%:$1).$2
    mv file filed
done

Выполните следующие команды $ grep ' file ' myfile

 $ grep 'file*' myfile

 $ grep '^ *file*' myfile

 $ grep 'file$' myfile

 $ sed 's/ file* / script /g' myfile

 $ sed ' /for/,/files/d' myfile

 $ sed '/\$[A-Z]..[A-Z]*/d' myfile

Затем объясните вывод или результаты.

решение1

NAMES=`ls *.$1`

Это присваивание. Переменной $NAMESприсваивается значение. Значение берется как вывод команды в обратных кавычках (см. Подстановка команд в man bash). $1— это специальный параметр, он соответствует первому аргументу скрипта. Таким образом, похоже, скрипт должен запускаться с расширением в качестве параметра (например, ./script.sh txt), вывод команды lsбудет сохранен в переменной.

filed=$(file%:$1).$2

Это действительно странно. Вы уверены, что скобки не были фигурными? И там также должно быть a .вместо :.

filed=${file%.$1}.$2

${var%pattern}вырезает шаблон с конца переменной. man bashПодробности см. в разделе Расширение параметров. Таким образом, в этом случае он удаляет точку и расширение, заданное первым параметром, и добавляет точку и второй параметр.

Кстати, линия хода, вероятно, должна быть

mv $file $filed

в противном случае не было бы смысла использовать цикл.

Связанный контент