2010-05-31 4 views
1

J'ai un problème, je liste des données dans le fichier:scripts sur Cshell

053-37878 03828008 Moskovitch James 500 
052-34363Mendelson Kippi 450 
053-32322 03828008 Jameson Shula 350 
054-39238 03333333 Merden Moshe 300 

est-il possible de réécrire cette liste dans le même fichier (sans utiliser le fichier temporaire) mais sans dernier numéro merci en avance pour toute aide (je parle de scripts C-Shell)

+0

Jusqu'où avez-vous? –

+0

@Rowland Shaw: désolé, qu'est-ce que ça veut dire? – lego69

+0

Qu'avez-vous essayé jusqu'à présent? Avez-vous une tentative de faire fonctionner ce qui échoue? – crazyscot

Répondre

1
  1. Pourquoi avez-vous besoin d'éviter les fichiers temporaires?

    cut -d " " -f 1,2,3 myfile > myfile2; mv myfile2 myfile 
    
  2. Vous pouvez également utiliser facilement passer de Perl -i pour modifier le fichier en place. Il crée toujours un fichier temporaire sous les couvertures, IIRC.

  3. Si vous avez besoin de ceci pour vos devoirs, utilisez Perl pour lire le fichier en mémoire (File :: Slurp), coupez le dernier champ en utilisant regex ou quelque chose comme ça; et écrivez le fichier à partir de données stockées entières en utilisant un autre fichier: :: Slurp

+0

Ceci est cassé et dangereux! Le cliquetis de '> myfile' arrive * avant que *' cut' puisse en lire, et donc cela supprimera simplement le contenu de 'myfile'! C'est une erreur facile à faire, et c'est * bien * si vous avez 'cut -d" "-f 1,2,3 mon-dans-fichier> mon-out-file'. –

+0

@Antal S-Z: Je dois travailler avec le même fichier (pas de fichiers temporaires) est-il possible de résoudre ce problème? – lego69

+0

lego69: Pourquoi? DVK a raison, c'est une exigence étrange. Et leur première réponse me semble la meilleure (d'autant plus que Perl crée aussi un fichier temporaire.) –