28Jun
Lorsque vous gérez vos propres serveurs, l'une des choses que vous devez faire de manière semi-régulière est d'extraire des choses du milieu d'un fichier. Peut-être que c'est un fichier journal, ou que vous avez besoin d'ajouter une seule table à partir du milieu de votre fichier de sauvegarde MySQL, comme je l'ai fait.
Pour comprendre les numéros de ligne, une simple commande grep -n a fait le travail( l'argument -n renvoie les numéros de ligne).Cela a rendu facile de comprendre ce que j'avais besoin d'extraire.
grep -n wp_posts howtogeekdb010114.bak |moreRésultats dans quelque chose comme ceci, qui montre les numéros de ligne sur le côté gauche de la sortie. Taper tout dans "plus" fait en sorte que vous pouvez voir la première ligne sans le faire défiler. Maintenant, vous avez le numéro de ligne pour commencer, et probablement celui avec lequel terminer.
4160: - Structure de table pour la table `wp_posts` 4163: DROP TABLE IF EXISTS` wp_posts`;4166: CREATE TABLE `wp_posts`( 4203: - Décharger les données pour la table` wp_posts` 4206: LOCK TABLES `wp_posts` ÉCRIRE; 4207: / *! 40000 ALTER TABLE` wp_posts` DISABLE KEYS * /; 4208: INSCRIRE dans `wp_posts`VALUES( 1,2, '2006-09-11 05:07:23', '2006-09-11Vous pouvez, bien sûr, simplement rediriger la sortie de grep dans un autre fichier, comme ceci:
grep mot-clé.txt & gt; outputfileDans mon cas, cela ne voulait pas fonctionner, parce que je ne pouvais pas importer la sauvegarde résultante pour une raison quelconque. Donc, j'ai trouvé une façon différente d'extraire les lignes en utilisant sed, et cette méthode a fonctionné
sed -n '4160,4209p' howtogeekdb0101140201.bak & gt; outputfileFondamentalement, la syntaxe est la suivante, en veillant à utiliser l'argument -n, et inclure le "p" après le numéro de la deuxième ligne
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp 'nom_fichier & gt; nom_du_sortieD'autres façons de retirer des lignes spécifiques au milieu d'un fichier? Vous pouvez utiliser la "tête"."Commande avec l'argument + number pour juste lire les x premières lignes d'un fichier, puis utiliser tail pour extraire ces lignes. Pas la meilleure option, beaucoup de frais généraux. Option plus simple? Vous pouvez utiliser la commande split pour transformer le fichier en plusieurs fichiers directement au numéro de ligne souhaité, puis extraire les lignes à l'aide de la tête ou de la queue.
Ou vous pouvez simplement utiliser sed.