2 fichiers cote à cote en shell

Fermé
claudeJ - 30 avril 2009 à 01:12
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 30 avril 2009 à 13:55
Bonjour,
Bonjour je cherche a faire un script en shell qui affiche cote à cote le meme nombre de caracteres de 2 fichiers.

Exemple:

fichier a.txt
bonjour le site du chat

fichier b.txt
ce forum et vraiment pratique

résultat après passage a la moulinette par le script

bonjour le|ce forum e
site du c|t vraiment
hat | pratique


j'ai trouvé un sujet sur ccm ou on parle de la commande fold -w 10 fichier.txt permet d'afficher un certains nombre de caractère.
Je suppose donc qu'il faut couplé ca à une boucle if ou peut etre que sed/awk peut etre utilisé ?

merci

4 réponses

mamiemando Messages postés 33274 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 septembre 2024 7 783
30 avril 2009 à 02:00
En fait tout dépend de ce que tu veux faire. Si le but c'est de comparer les fichiers peut être que ce que tu cherches est un diff (c'est typiquement ce qu'on utilise pour comparer deux fichier). A noter l'excellent kompare pour comparer deux fichiers.
http://blog.thedebianuser.org/wp-content/uploads/2006/08/komparepackagelists.png

Si les deux fichiers n'ont rien à voir mais que le placement des caractères est important, je vois bien une solution via vim à coup de vertical split :
# Configuration data is parsed|# System-wide .bashrc file for
 as follows:                  | interactive bash(1) shells.
#  1. command line options    |
#  2. user-specific file      |# To enable the settings / com
#  3. system-wide file        |mands in this file for login s
# Any configuration value is o|hells as well,
nly changed the first time it |# this file has to be sourced
is set.                       |in /etc/profile.
# Thus, host-specific definiti|
ons should be at the beginning|# If not running interactively
 of the                       |, don't do anything
# configuration file, and defa|[ -z "$PS1" ] && return
ults at the end.              |
                              |# check the window size after
# Site-wide defaults for some |each command and, if necessary
commonly used options.  For a |,
comprehensive                 |# update the values of LINES a
# list of available options, t|nd COLUMNS.
heir meanings and defaults, pl|shopt -s checkwinsize
ease see the                  |
<h_config [RO] 16,1        14% <h.bashrc [RO] 1,1        Haut

Ici j'ai dans la colonne de gauche le fichier /etc/ssh/ssh_config et à droite le fichier /etc/bash.bashrc. J'ai obtenu ce résultat via un :
vim /etc/ssh/ssh_config

Une fois le fichier ouvert, pour ouvrir le second : echap :vs /etc/bash.bashrc. Il ne reste plus qu'à copier coller le tout à la souris (sélectionne le texte pour le copier, pour le coller utilise le clic du milieu/de la molette).

Petites précisions :
1) La disposition du texte dépend de la taille de la console.
2) Je pense qu'il est possible de déplacer la barre médiane mais je ne sais pas comment on fait. Le plus simple consiste à ouvrir vim dans un terminal, faire le vertical split, puis redimensionner la console si tu veux que les deux colonnes soient de tailles différentes.
3) Pour quitter : echap :q!
4) Tu peux déplacer le curseur avec les flèches et le changer de split avec un ctrl w w

Bonne chance
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 10:34
Salut,
[tmpfs]$ cat fich1
bonjour le site du chat

[tmpfs]$ cat fich2
ce forum et vraiment pratique

[tmpfs]$ fold -w 10 fich1 > tmp1

[tmpfs]$ fold -w 10 fich2 > tmp2

[tmpfs]$ paste -d "|" tmp*
bonjour le|ce forum e
 site du c|t vraiment
hat| pratique

[tmpfs]$
,-))
0
mamiemando Messages postés 33274 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 septembre 2024 7 783
30 avril 2009 à 12:35
Très instructif :-) Je ne connaissais pas paste.Et ça ressemble pas à une énorme bidouille scandaleuse comme j'ai proposé ;-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 avril 2009 à 13:08
;-))

C'est dingue le nombre de commandes inconnues (et au combien utiles au demeurant) dont regorgent les systèmes Unixes et dérivés ;-))
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
30 avril 2009 à 13:55
hello
ou avec pr
$ cat f1.txt
bonjour le site du chat
$ cat f2.txt
ce forum et vraiment pratique
$ fold -w 5 f1.txt > f11.txt
$ fold -w 5 f2.txt > f22.txt
$  pr -T -m -w12 -s'|'  f11.txt f22.txt
bonjo|ce fo
ur le|rum e
 site|t vra
 du c|iment
hat  | prat
     |ique
     |
0