Однострочная команда оболочки, которая находит всех студентов в LEC05 и выводит их имена в отсортированном порядке

Это выглядит как ошибка, если строка интерпретируется сама по себе.

Обратная косая черта экранирует следующий символ от интерпретации оболочкой. Если следующим символом является новая строка, то новая строка не будет интерпретироваться оболочкой как конец команды. Это эффективно позволяет команде a занимать несколько строк.

Чаще всего используется в подобных ситуациях (т. е. для облегчения чтения длинной команды):

rsync --archive \
      --verbose \
      user@source:/dir/ \
      user@target:/dir/

Обратите внимание, что последняя строка не заканчивается на \, так как она не продолжается дальше. следующая строка. Также обратите внимание, что ничего (даже комментарий или один пробел) не может следовать за \ в строках, которые разбиты таким образом.

Кроме того, да, команда скачивает файл и сохраняет его в файл на диске. Другим способом сделать то же самое, без перенаправления, была бы опция Curl -o:

curl -L \
    -o /usr/local/bin/docker-machine-driver-kvm \
    https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-ubuntu14.04 \

(за которой следует то, что находится на следующей строке вашего скрипта)

0
14.06.2017, 19:03
2 ответа

С awk:

awk '$4 == "LEC05" { print $2 }' /path/to/inputfile | sort > outputfile

С grep и cut:

grep 'LEC05' /path/to/inputfile | cut -f2 | sort > outputfile
2
28.01.2020, 02:25

Больше awk -ness

     awk '/LEC05/{ name[$2]++ } END { n = asorti( name,sname ); for ( i in sname ) print sname[i]}' input.txt
1
28.01.2020, 02:25

Теги

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