Tohle mi taky nefunguje. Jenom aby mi to vrátilo celý text souboru kromě té funkce která se odstraní.
script=$0;
content=$(cat $script | sed -n '/function codecs/,/fi;/d');
Když vynechám -n tak se objeví výstup, ale vypadá to jak kdyby to vůbec nebylo profiltrováno:
content=$(cat $script | sed '/function codecs/,/fi;/d');
content=$(echo $content | sed -n '/mandriva/,/fi;}/p');
content=$(echo $content | sed '/^\s*urpmi[:space:]--auto/p');
Tak mi bylo sděleno, že toto nemůže fungovat protože sed pracuje jen po jednotlivých řádcích.
Řešení pomocí awk včetně selectu:
awk 'BEGIN{RS="\n}";FS="if"}
!/function codecs/{
for(i=1;i<=NF;i++){
if($i~/'$system'/){
m=split($i,u,"\n")
for(j=2;j<=m;j++) if(u[j]~/urpmi --auto/){print u[j]}
}
}
}' );
content=$content$'\E[1;33m\nKonec\E[1;0m';
# VYBRAT ŘÁDKY
clear; echo -e $'\E[1;33m''Vyber řádku:'$'\E[1;0m'; OLDIFS=$IFS; IFS=$'\n';
select line in $content; do
line=$(echo $line | # odfiltrovat funkci 'codecs' a vybrat řádky 'urpmi --auto', které jsou uvnitř podmínky '"mandriva"'
awk ... # zbyva doresit
break; done;