bash, sed - wyrażenia regularne
: 05 czerwca 2008, 17:54
Hmm jak na razie jestem początkujący w te klocki i uczę się głównie tego języka z książek i przykładów znalezionych w necie. Jednym znich jest:
Praktycznie rozumiem jak działa w miar prosty ten skrypt nie rozumiem tylko co robią te znaczki po sed (bodajże są to wyrażenia regularne) a dokładniej mi chodzi o tą część
Czy mógłby mi ktoś wytłumaczyć co powodują te wyrażenia???.
Kod: Zaznacz cały
katalog (){
echo "Podaj nazwy katalogow"
read dir
read dir2
lista=$(diff -s "$dir" "$dir2" | grep ident | sed 's/.*\///;s/\ .*//')
if [ -z "$lista" ]; then
echo "Brak identycznych plików w podanych katalogach"
else
echo
echo "Znaleziono identyczne pliki:"
echo "$lista"
fi
}
if [ $# -eq 0 ]; then
echo "Skrypt oblicza ilosc lini, slow, znakow w pliku oraz podaje rozmiar pliku"
echo "-inazwapliku"
echo "lub szuka takich samych plikow w zadanych katalogach"
echo "-j"
elif [ $# -gt 1 ]; then
echo "Nieprawidlowa liczba paramertow"
else
while getopts :i:j par
do
case $par in
i) if [ -r $OPTARG ]; then
echo "W pliku jest: `cat -n $OPTARG | tail -1 | awk '{print $1}'` linii"
echo "W pliku jest: `wc -w $OPTARG | awk '{print $1}'` slow"
echo "W pliku jst: `wc -c $OPTARG | awk '{print $1}'` znakow"
echo "Plik zajmuje: `ls -il | grep -w $OPTARG | awk '{printf $6}'` bajtów"
else
echo "Nie ma takiego pliku"
fi;;
j) katalog;;
?) echo "Nieznana opcja."; exit;;
esac
done;
fi
Kod: Zaznacz cały
sed 's/.*\///;s/\ .*//'