1. Head
head plik | tail plik, które nie działa
Nie wiem co chciałeś przez to osiągnąć.
- Jak dla mnie shakowales
head, tym
bo np. w
$ head --help
Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
...
u mnie nie pisze ze można podać liczbę zamiast opcji.
Ale fakt faktem działa.
- Jesli poczytasz dokladniej "head --help" to bedziesz mogl np zrobic
$ head -n 2 conf | tail -n 1
SystemGroup
Czyli head wyswietli 2 piersze linie , a potem tail wyswietli z poprzedniego wyniku jedna linie od konca.
2. Grep
Kiedy uzywasz grep mozesz otrzymać kilka linii,
Natomiast ty potrzebujesz otrzymać konkretna linie do podmiany.
$ grep Listen plik
Listen *:@DEFAULT_IPP_PORT@
Listen localhost:@DEFAULT_IPP_PORT@
Jeśli chcesz podmieniac cale linie ktore zawieraja dane slowo,
to moglbys najpierw je wyszukac, a potem w petli uzyc sed.
Teoretyczny przyklad tylko
LISTA_LINI=$(grep sdsdsdsds /etc/plikkonf)
LICZBA_LINI=$(grep sdsdsdsds /etc/plikkonf | wc -l)
for i in `seq 1 $LICZBA_LINI`
do
LINIA_KOLEJNO=$(awk 'NR=='$i <<< "$LISTA_LINI")
sed -i -e "s/${LINIA_KOLEJNO}/blablabal${1}/g" /etc/plikkonf
done
PS: Kod troche sie na forum rozjechal,
mam na mysli ze komendy w nawiasach
( ) sa w jednej linii.
3. Drobne rady:
- Jesli beda Cie denerwowac
' ' ' ' to zamiast tego mozesz sprobowac uzyc
" "- Jesli bedzie problem ze znalezieniem zmiennej
$ZMIENNAjuznie , mozesz zapisac
${ZMIENNA}juznie- Mozesz dodac wlasne debugowanie
# Debugowanie wlaczyc "on" , wylaczyc "off"
DEBUG0="on"
function DEBUG()
{
[ "$DEBUG0" == "on" ] && $@
}
ZMIENNA="12"
DEBUG echo "Jesli wlaczone debugowanie wyswietli zmienna $ZMIENNA"
Oczywiscie do skryptu mozesz sobie zbudowac wlasny
--help i tam dodac debugowanie.