Bash, sed: 228 223 197 (242 - 70) = 172
c=${5:-=};R=$c;L=;for f in r l;do
e="sed -e ";$e"$ d;s/$\| */ \n/g" $1>m
o=1;for w in `$e"$ p;d" $1`;do
$e"$o,/^$w /s/^$w /$L$w$R /" m>n;o="/$c/"
cp n m;done;tr -d \\n<n|fold -sw${2:-35}|$e"s/$c/ /g">$f
L=$c;R=;done;pr -tmw${3:-80} ${4:-l r}
Si le script se trouve dans un fichier exécutable appelé "stéréo", tapez
stereo file.in [column_width [page_width ["r l"]]]
largeur_colonne est un nombre; 25-45 fonctionnera, la valeur par défaut est 35.
page_width est un nombre, devrait être environ le double de la column_width, la valeur par défaut est 80
Pour une vision croisée, utilisez "r l" comme quatrième argument. La valeur par défaut est "l r", qui permet une visualisation parallèle.
EDIT: réécrit pour diviser le fichier en un mot par ligne, puis remonter à la fin. Remarque: réserve le signe "=" pour son propre usage. Tout signe "=" dans le fichier d'entrée deviendra vide.
EDIT: Si votre message contient des signes "=", vous pouvez choisir un autre symbole pour le script à utiliser, en le fournissant comme 5ème paramètre.
Exemple
Entrée: vegetarianism.txt:
I invented vegetarianism. It is a diet involving no meat, just
vegetables. It is also common in cows - they are awesome.
vegetarianism. is awesome.
Résultat
./stereo vegetarianism.txt 32 72 "l r": | développer (en utilisant les deux points pour son symbole de travail interne)
I invented vegetarianism. It I invented vegetarianism. It
is a diet involving no meat, is a diet involving no meat,
just vegetables. It is also just vegetables. It is also
common in cows - they are common in cows - they are
awesome. awesome.
./stereo washington.txt 35 75 "l r" | agrandir
In a little district west of In a little district west of
Washington Square the streets Washington Square the streets
have run crazy and broken have run crazy and broken
themselves into small strips themselves into small strips
called 'places'. These 'places' called 'places'. These 'places'
make strange angles and curves. make strange angles and curves.
One Street crosses itself a time One Street crosses itself a time
or two. An artist once discovered or two. An artist once discovered
a valuable possibility in this a valuable possibility in this
street. Suppose a collector with a street. Suppose a collector with a
bill for paints, paper and canvas bill for paints, paper and canvas
should, in traversing this route, should, in traversing this route,
suddenly meet himself coming suddenly meet himself coming
back, without a cent having been back, without a cent having been
paid on account! paid on account!
Le "| expand" n'est pas nécessaire mais lors du décalage de la sortie de 4 endroits, les TAB sont mal gérés. Il pourrait être mis dans le script au coût de 7 octets.
Variation ImageMagick
Remplacement de la dernière ligne par une commande ImageMagick texte-image:
c=${6:-=};R=$c;L=;for f in r l;do
e="sed -e ";$e"$ d;s/$\| */ \n/g" $1>m
o=1;for w in `$e"$ p;d" $1`;do
$e"$o,/^$w /s/^$w /$L$w$R /" m>n;o="/$c/"
cp n m;done;tr -d \\n<n|fold -sw${2:-35}|$e"s/$c/ /g">$f
L=$c;R=;done;
convert -border 10x30 label:@${4:-l} label:@${5:-r} +append show:
Dans celui-ci, le "r" et le "l" pour la visualisation croisée par rapport à la visualisation parallèle sont des arguments séparés:
./im_stereo vegetarianism.txt 40 80 lr =

(source: simplesystems.org )
EDIT 3: Ajout de la variation ImageMagick.