2016-02-04 2 views
-7

Напишите сценарий с именем print_lines.sh, который использует команду head и tail для печати определенного набора строк из файла. Сценарий должен принимать три аргумента: номер строки для начала, номер строки для остановки и используемый файл. Вот пример запуска:Печать определенных строк в Unix

`[[email protected] ~]$ print_lines.sh 7 10 /etc/passwd 
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 
    halt:x:7:0:halt:/sbin:/sbin/halt 
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 
    operator:x:11:0:operator:/root:/sbin/nologin 
    [[email protected] ~]$` 

В этом примере скрипт печатает строки 7 через 10 (включительно) и т.д./пароль файл /. Ваш скрипт должен выполнять проверку ошибок. В частности, вам необходимо проверить все следующие вещи:

  1. Вы получаете правильное количество аргументов (3).
  2. Указанный файл существует и является нормальным файлом.
  3. Номер указанной первой строки меньше или равен указанному последнему указанному номеру строки.
  4. Фактическое количество строк в файле больше, чем последняя строка для печати. Если какое-либо из этих условий неверно, вы должны распечатать соответствующее сообщение об ошибке пользователю и остановить. Если все они выполнены, вам нужно сделать немного арифметики и использовать голову и хвост вместе, чтобы распечатать только запрошенные строки.

Я знаю, что это что-то вдоль этих линий:

#!/bin/bash 

heads -n 10 /etc/passwd | tails -3 

Не знаете, как идти об остальном ...

+1

Возможно инструкции находятся в вашем учебнике? – ghoti

+0

Вы знаете, как получить аргументы? Команды - 'head' и' tail', а не «head» и «tails». Для этого я бы использовал 'sed', где вы можете специально напечатать диапазон номеров строк. –

+0

'head -n $ 2 $ 3 | tail -n $ 1 'это то, что у меня есть, но его печать немного больше, чем 7-10 строк – user5442073

ответ

1
  1. Количество атрибутов можно получить доступ через $#
  2. test -f $file проверит, что файл существует и является нормальным файлом
  3. test $x -lt $y будет проверить, если $ х меньше $ у
  4. wc -l будет выводить количество строк в файле
+0

, так как я могу применить это? – user5442073

+2

С твоим мозгом? – Aaron

+4

Трудно вам помочь: вместо того, чтобы идти с точной проблемой, вы даете целую спецификацию и, кажется, спрашиваете: «Эй, можете ли вы сделать это для меня?». Это, очевидно, будет потерей моего времени и не научит вас многому. Я дал вам знания, которые вам понадобятся, чтобы выполнить это упражнение, навязывая их друг другу, это наименьшее, что вы должны научиться делать самостоятельно. – Aaron

Смежные вопросы