Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux

Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux
Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux

Vidéo: Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux

Vidéo: Comment supprimer des lignes du milieu d'un fichier à l'aide du terminal Linux
Vidéo: Steam Deck - Le mode bureau - YouTube 2024, Avril
Anonim
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.
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 | more

Résultats dans quelque chose comme ceci, qui montre les numéros de ligne sur le côté gauche de la sortie. Si vous ajoutez plus à la tuyauterie, vous pouvez voir la première ligne sans la faire défiler. Vous avez maintenant le numéro de ligne pour commencer, et probablement celui avec lequel vous allez terminer.

4160:-- Table structure for table `wp_posts` 4163:DROP TABLE IF EXISTS `wp_posts`; 4166:CREATE TABLE `wp_posts` ( 4203:-- Dumping data for table `wp_posts` 4206:LOCK TABLES `wp_posts` WRITE; 4207:/*!40000 ALTER TABLE `wp_posts` DISABLE KEYS */; 4208:INSERT INTO `wp_posts` VALUES (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 keyword filename.txt > outputfile

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 > outputfile

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' filename > outputfilename

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.

Conseillé: