Bash script - отображать файл из строки "c" - PullRequest
0 голосов
/ 25 января 2019

У меня есть скрипт, который отображает «n» строк и отображает строку «c».

#!/bin/bash
hn=5
tn=1
while getopts ":n:c:" opt
do
    case $opt in
        h) echo Pomocy
            exit 1
            ;;
        n) hn=$OPTARG ;;
        c) tn=$OPTARG ;;
        \?) echo Nieznana opcja $OPTARG;;
        :) echo Brakuje argumentu opcji $OPTARG ;;
    esac
done

shift $(($OPTIND-1))
for i do
    if [[ -f $1 ]];
    then

        cat $i | head -n $hn
    else
        echo "plik nie istnieje"
    fi
done

exit 0

как заставить его отображаться из строки c?отобразить "n" строк.какой командой делать "c" строку?по умолчанию отображается с 1 строки

Спасибо за помощь.Эта команда работает хорошо

cat $i |head -n $hn | tail -n +$tn

1 Ответ

0 голосов
/ 25 января 2019

Простой способ с tail, wc и awk:

a=`wc -l $file | awk '{print $1}'`
tail -n $(( a - tn)) $hn

И если я положу это в ваш оригинальный файл:

#!/bin/bash
hn=5
tn=1
while getopts ":n:c:" opt
do
    case $opt in
        h) echo Pomocy
            exit 1
            ;;
        n) hn=$OPTARG ;;
        c) tn=$OPTARG ;;
        \?) echo Nieznana opcja $OPTARG;;
        :) echo Brakuje argumentu opcji $OPTARG ;;
    esac
done

shift $(($OPTIND-1))
for i do
    if [[ -f $1 ]];
    then
        a=`wc -l $file | awk '{print $1}'`
        tail -n $(( a - tn)) $hn
    else
        echo "plik nie istnieje"
    fi
done
exit 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...