Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux
Lorsque vous gérez vos propres serveurs, vous devez extraire des éléments semi-réguliers au milieu d'un fichier. C’est peut-être un fichier journal, ou vous devez ajouter une table au milieu de votre fichier de sauvegarde MySQL, comme je l’ai fait..
Pour déterminer les numéros de ligne, une simple commande grep -n a effectué le travail (l'argument -n renvoie les numéros de ligne). Cela m'a permis de comprendre facilement ce que je devais extraire.
grep -n wp_posts howtogeekdb010114.bak | plus
Résultats dans quelque chose comme ceci, qui montre les numéros de ligne sur le côté gauche de la sortie. En canalisant tout vers «plus», vous pouvez voir la première ligne sans que celle-ci défile. Maintenant, vous avez le numéro de ligne pour commencer, et probablement celui qui se termine par.
4160: - Structure de table pour la table 'wp_posts' 4163: DROP TABLE IF EXISTS 'wp_posts'; 4166: CREATE TABLE 'wp_posts' (4203: - Données de dumping pour la table 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'VALEURS (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Bien sûr, vous pouvez simplement diriger la sortie de grep dans un autre fichier, comme ceci:
grep mot-clé nom_fichier.txt> fichier de sortie
Dans mon cas, cela ne voulait pas fonctionner, car je ne pouvais pas importer la sauvegarde résultante pour une raison quelconque. J'ai donc trouvé un moyen différent d'extraire les lignes à l'aide de sed, et cette méthode a fonctionné.
sed -n '4160,4209p' howtogeekdb0101140201.bak> fichier de sortie
Fondamentalement, la syntaxe est la suivante: veillez à utiliser l'argument -n et à inclure le «p» après le numéro de la deuxième ligne..
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' nom_fichier> nom_fichier_sortie
Vous pouvez également extraire des lignes spécifiques au milieu d’un fichier? Vous pouvez utiliser la commande "head" avec l'argument + number pour 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 head ou tail..
Ou vous pouvez simplement utiliser sed.