Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/11/2013, à 15:51

Oma

aide script pour gros nul

bonjour,

j'ai un fichier avec une information par ligne (environ 100 lignes), je voudrais copier le 2eme ligne puis la première sur une ligne jusqu'a la fin.
Une petite aide!!! Merci

Hors ligne

#2 Le 27/11/2013, à 15:55

inbox

Re : aide script pour gros nul

Salut,

A priori, supprimer les CR/LF donnera le résultat attendu.

A+


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#3 Le 27/11/2013, à 16:02

Oma

Re : aide script pour gros nul

je n'arrive pas a faire passer la ligne 2 a la place de la linge 1....surtout avec un sed !!!!

Hors ligne

#4 Le 27/11/2013, à 16:12

inbox

Re : aide script pour gros nul

Dans ta question d'origine, tu ne parles pas de remplacer la ligne 1 par la 2ème !!!

Pour continuer sur ma 1ère réponse, il existe tout bêtement le paquet dos2unix.


Un problème résolu ? Indiquez le en modifiant le titre du sujet.

Hors ligne

#5 Le 27/11/2013, à 16:16

Oma

Re : aide script pour gros nul

non je parle de copier la ligne 2 puis la ligne 1 sur une ligne
ligne 1: toto est a la plage
ligne2: café
etc....
résultat: café toto est a la plage

Hors ligne

#6 Le 27/11/2013, à 16:35

pingouinux

Re : aide script pour gros nul

Bonjour,
Si le nombre de lignes du fichier est impair,  la dernière ligne est omise :

sed -n 'h;n;G;s/\n/ /p' fichier

Ajouté :
Si le nombre de lignes du fichier est impair,  la dernière ligne apparaît aussi :

awk '{if(NR%2){lig=$0}else{print $0" "lig}nr=NR}END{if(nr%2){print}}' fichier

Dernière modification par pingouinux (Le 27/11/2013, à 18:07)

Hors ligne

#7 Le 27/11/2013, à 17:56

Olivier_Dev

Re : aide script pour gros nul

Bonjour

as tester, je suis pas sur une bécane linux actuellement.:/

modifié :

#!/bin/bash

outputfile="output"
ispair=0

# Lecture du fichier ligne par ligne
while read line 
do
    if [ $ispair -eq "1" ]
     then
       # dans le cas ou nous sommes sur la deuxieme ligne
        echo $line $firstline >>  $outputfile;
        ispair=0
        firstline=""
    else
        # nous somme sur la premiére ligne
        firstline=$line;
        ispair=1
    fi
done < input.txt;

exit 0

Dernière modification par Olivier_Dev (Le 27/11/2013, à 19:54)

Hors ligne

#8 Le 27/11/2013, à 18:24

Oma

Re : aide script pour gros nul

le sed est nikel ... remarque ce ma permis de voire que mon fichier était mal foutu des fois la ligne 2 et en 1 et vice et versa.....
encore un bonne prise de tête en vu.
Donc je vais le pense sur le dernier script shell qui va plus de mettre de faire de comparaison ...
enfin j’espère ....:)

Hors ligne

#9 Le 27/11/2013, à 20:02

Olivier_Dev

Re : aide script pour gros nul

cool pingouinux sympa les versions sed et awk.

Hors ligne

#10 Le 27/11/2013, à 20:16

pingouinux

Re : aide script pour gros nul

Voici une version en python3, qui sort aussi la dernière ligne s'il y en a  un nombre impair :

#!/usr/bin/python3

impair=0
while True :
 try : lig=input(); impair=1-impair
 except EOFError :
    if impair : print(lig0)
    break
 if impair : lig0=lig
 else : print(lig+' '+lig0)

À utiliser ainsi :

./mon_script.py <fichier

Hors ligne

#11 Le 28/11/2013, à 20:55

Olivier_Dev

Re : aide script pour gros nul

hum, pour la version python je suis pas fan.

en Python:

#!/usr/bin/env python
import sys

if len(sys.argv) == 2:
    file_input = sys.argv[1]

try:
    file_content = open(file_input, "r").readlines()
except IOError, e:
    print e
    sys.exit()

traitement = [file_content[i].replace('\n', '')+file_content[i-1].replace('\n', '') for i in range(len(file_content)) if i % 2]
for line in traitement:
    print line

utilisation:

python script.py finput_file

ou:

[code]
python script.py finput_file > output_file
[/code]

Dernière modification par Olivier_Dev (Le 28/11/2013, à 21:03)

Hors ligne