1 #!/bin/bash 2 chemin="/home/user/monfichier.txt" 3 chemin1="/home/user/ref.txt" 4 5 6 7 set $( wc -l $chemin) 8 ligne=$1 9 echo $ligne 10 11 for i in $(seq 2 $ligne ) 12 do 13 var=$(sed -n "$i"p $chemin) 14 nom=${var%%,*} 15 premier=${nom:0:1} 16 if [ $premier != '"' ] 17 then 18 echo $nom >> $chemin1 19 else 20 reference=${nom#'"'} 21 reference2=${reference%'"'} 22 echo $reference2 >> $chemin1 23 fi 24 done 25 exit 0
1 #!/bin/bash 2 chemin="/home/user/monfichier.txt" 3 chemin1="/home/user/ref.txt" 4 5 somme=0 6 7 set $( wc -l $chemin) 8 ligne=$1 9 echo $ligne 10 11 for i in $(seq 2 $ligne ) 12 do somme=$((somme+1)) 13 var=$(sed -n "$i"p $chemin) 14 nom=${var%%,*} 15 premier=${nom:0:1} 16 if [ $premier != '"' ] 17 then 18 sed "$sommea\$nom" $chemin1 19 else 20 reference=${nom#'"'} 21 reference2=${reference%'"'} 22 sed "$sommea\$reference2" $chemin1 23 fi 24 done 25 exit 0
source="/chemin/vers/fichier.in" dest="/chemin/vers/fichier.out" sed -n 's/\([^,]*\),.*/\1/w'"$dest"'' "$source"--
source="/chemin/vers/fichier.in" dest2="/chemin/vers/fichier2.out" sed = "$source" | sed -n 'N;s/\n/ /; s/\([^,]*\),.*/\1/w'"$dest2"''Ça fonctionne ?
sed -n '/^"/!s/\([^,]*\),.*/\1/p'
si la ligne ne commence pas par un double-quote, la substitution est appliquée, et le résultat est affiché
echo -e "le marsu, pilami\\n\"gaston et jeanne\", prunelle" |\ sed -n '/^"/!s/\([^,]*\),.*/\1/p;/^"/s/"\([^,]*\)",.*/\1/p' le marsu gaston et jeannemeuh, si ça marche ! ^^