[Linux-Biella] estrarre del testo da un file
Daniele Segato
daniele.bilug a gmail.com
Mar 10 Ago 2010 22:03:31 CEST
Il giorno mar, 10/08/2010 alle 20.58 +0200, Federico "Darkmagister"
Pietta ha scritto:
> salve
> io avrei bisogno, preso un file conosciuto e di cui conosco circa il
> contenuto, recuperare un determinato testo compreso fra due parti di codice.
>
> esempio
>
> testo1
> testo2
> ##########
> testo3
> testo4
> ##########
> testo5
>
> in bash vorrei poter recuperare in una variabile o in un altro file il
> testo fra i due limitatori
>
> quindi :
> testo3
> test4
>
> nel file potrei avere più occorrenze del limitatore, a me interessa
> prendere l'ultima e la penultima....
>
> ho provato con grep ma con scarsi risultati, preso debba unirlo ad altri
> comandi.
>
> qualcuno sa come aiutarmi ??
bash non è molto adatto a questo particolare scopo.. meglio perl...
anche con awk qualcosina la si fa
sed qui penso possa aiutarti poco
però se proprio ti serve sh, bash o simile questo script fa quel che ti
serve (scritto or ora)
#!/bin/sh
if [ ! -r "$1" ] ; then
echo "$1 is not a regular file" >&2;
exit 1;
fi
# first argument is the file
cat "$1" |
# group the commands to avoid the "pipeline disappearing variable issue"
# see http://mywiki.wooledge.org/BashFAQ/024
{
while read line; do
if [ "$line" = '##########' ] ; then
# found delimiter going to next content
CONTENT="$NEXT_CONTENT";
NEXT_CONTENT='';
else
# adding a line to NEXT_CONTENT
if [ "$NEXT_CONTENT" = '' ] ; then
NEXT_CONTENT="$line";
else
# keep the new line
NEXT_CONTENT="$NEXT_CONTENT
$line";
fi
fi
done
# double quotes are needed
echo "$CONTENT";
}
ciao,
Daniele
Maggiori informazioni sulla lista
Linux