![]() |
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| UNIX pour les nuls Questions et réponses Si vous ne savez pas où poster un UNIX ou Linux question, post it here. Tous les systèmes UNIX et Linux, débutants bienvenus! |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| Split fichiers à l'aide de Csplit | savitha | UNIX pour les nuls Questions et réponses | 7 | 12-01-2007 11:55 AM |
| Diviser un fichier en 2 Fichiers | dummy_needhelp | De programmation et de script Shell | 7 | 11-04-2007 07:36 PM |
| nombre total de fichiers qui ont "aaa" dans les fichiers dont les noms de dossier _bbb * * | sudheshnaiyer | UNIX pour les nuls Questions et réponses | 1 | 08-16-2007 03:34 PM |
| Split d'un fichier en 2 ou plus de fichiers | bobo | UNIX pour les nuls Questions et réponses | 4 | 01-16-2006 05:15 PM |
| awk commande divisé en 2 fichiers | m_subra_mani | De programmation et de script Shell | 3 | 12-13-2005 05:13 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
diviser les fichiers en nombre de fichiers de sortie
Salut tout le monde,
J'ai quelques gros fichiers texte que j'ai besoin de se scinder en un nombre spécifique de fichiers de taille égale. Pour autant que je sache (et je ne sais pas vraiment que beaucoup de ) La division de commandement que vous permet de spécifier le nombre de lignes ou d'octets. Les fichiers sont tous de taille différente, de sorte que le nombre de lignes diffèrent également.J'utilise le code suivant pour voir combien de lignes de chaque fichier de sortie doit être (1 / 50 de l'original du document): y \u003d `wc | awk '(print $ x/50)' | awk-F. '(if ($ 2> \u003d 1) (print $ 1 +1) else (print $ 1))' ` echo $ y Le problème est que je ne peux pas utiliser la variable $ y comme une contribution à la scission de commande comme ceci: $ x split-d-l $ y split / $ x Il ne fonctionne tout simplement pas. Est-ce que quelqu'un connais un moyen de passer la valeur de la variable $ y dans la division de commandement? Ou est-ce que quelqu'un a une meilleure façon de résoudre le problème en entier? Merci d'avance! |
|
||||
|
Il n'est vraiment pas pourquoi vous ne pouvez pas utiliser la variable. La façon dont elle est maintenant, je ne crois pas qu'il contient une valeur utile (qu'est-ce que le echo d'impression pour vous?), mais la fixation des scripts si cela fonctionne, comme semble le meilleur plan à moins que vous ne pouvez expliquer pourquoi il "ne fonctionne tout simplement pas". En supposant que $ x est le nom du fichier que vous êtes sur le point de scission, essayez quelque chose comme ceci à la place. Code:
y=`wc -l < $x | awk '{ print 1+int($1/50) }'`
J'ai mis à l'ajout de l'un sur la théorie que cela devrait faire quelque chose de vaguement utile, même avec des fichiers qui sont trop petits, avec une légère tendance à rendre le dernier fichier de la série plus petite que les autres. (Peut-être de diviser par 49 au lieu de compenser?) |
|
||||
|
L'écho me donne un certain nombre, dont il est censé faire.
Le plus utilisé est d'arrondir les chiffres: 232 devient 231.2, 231.0, mais reste 231. J'ai essayé de nouveau avec la variable $ x explicitement définies et il a travaillé. Ainsi, le problème semble être $ x. (désolé, je n'ai pas beaucoup dormi la nuit ) Cela change ma question:Si je veux utiliser mon script avec le texte original de fichier en entrée (comme ceci: sh test.sh <file.txt), comment puis-je faire appel au fichier d'origine à l'intérieur du script? Je pense évidemment que dans le $ x '$ x split-d-l $ y split / $ x "seraient remplacés par" file.txt ", mais il ne l'est pas. Dernière édition par Migrainegirl; au 05.13.2008 08:53 AM.. |
|
||||
|
Les paramètres sont en $ 1 $ 2 $ 3 etc, mais si vous invoquez le script de redirection, il n'y a pas de paramètre de position, et aucun nom de fichier, il suffit de l'entrée standard. Code:
vnix$ ./myscript file.txt oops # inside myscript, $1 is "file.txt" and $2 is "oops" vnix$ ./myscript # inside myscript, no file name is known; input is from standard input (terminal) vnix$ ./myscript <file.txt # again, inside myscript, no file name is known; input is redirected to come from file.txt Dernière édition par époque au 05.13.2008 09:02 AM.. Motif: Ajouter éclairant (?) Par exemple |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|