{ head; tail; }
решение не работало бы над каналами (или сокеты или любые другие non-seekable файлы) потому что head
мог использовать слишком много данных, поскольку они читают блоками и не могут искать назад на канале, потенциально оставляя курсор в файле вне какой tail
предназначен для выбора.
Так, Вы могли использовать инструмент, который читает один символ за один раз как оболочка read
(сюда использование функции, которая берет количество главных строк и строк хвоста как аргументы).
head_tail() {
n=0
while [ "$n" -lt "$1" ]; do
IFS= read -r line || { printf %s "$line"; break; }
printf '%s\n' "$line"
n=$(($n + 1))
done
tail -n "${2-$1}"
}
seq 100 | head_tail 5 10
seq 20 | head_tail 5
или реализация tail
в awk, например, как:
head_tail() {
awk -v h="$1" -v t="${2-$1}" '
{l[NR%t]=$0}
NR<=h
END{
n=NR-t+1
if(n <= h) n = h+1
for (;n<=NR;n++) print l[n%t]
}'
}
С sed
:
head_tail() {
sed -e "1,${1}b" -e :1 -e "$(($1+${2-$1})),\$!{N;b1" -e '}' -e 'N;D'
}
(хотя остерегаются этого некоторые sed
реализации имеют низкое ограничение на размер их пространства шаблона, так перестал бы работать для больших значений количества строк хвоста).
Просто следуйте инструкциям со страницы WIKI OpenWrt: http : //wiki.openwrt.org/doc/howto/internet.connection
А еще эта запись в блоге хороша: http://developwithguru.com/setup-and-use-pppoe -on-openwrt /
Edit: Обратите внимание, что вторая ссылка мертва. Но вы можете найти кешированную копию по этому адресу: https://web.archive.org/web/20150721030152/http://developwithguru.com/setup-and-use-pppoe-on-openwrt/
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'type' 'bridge'
option 'ifname' 'eth0 eth1'
option 'proto' 'static'
option 'netmask' '255.255.255.0'
option 'nat' '1'
option 'ipaddr' '192.168.1.6'
config interface wan
option ifname eth0
option proto pppoe
option username 'pppoe_username'
option password 'pppoe_user_password'
Примечание: для настроек pppoe просто нужна указанная выше конфигурация, и после перезапуска / перезагрузки сети вы увидите pppoe набрав номер в системном журнале и после успешного подключения, вы получите новое имя интерфейса с помощью pppoe-wan или pppoe