Hogyan távolítható el a vonalak a fájl közepétől a Linux terminál használatával
Amikor saját szervereit kezeli, az egyik dolog, amit félig rendszeresen kell elvégeznie, a fájl közepéből való kivonat. Lehet, hogy ez egy naplófájl, vagy szükség van egy táblára a MySQL biztonsági másolatának közepéről, mint én.
A sorszámok kitalálásához egy egyszerű grep -n parancs elvégezte a feladatot (a -n argumentum a sorszámokat adja meg). Ez megkönnyítette, hogy kitaláljam, mit kellett.
grep -n wp_posts howtogeekdb010114.bak | több
Ebből az eredményből származik, ami a sorok számát mutatja a kimenet bal oldalán. A „több” -be történő csővezeték gondoskodik arról, hogy az első sor látható legyen. Most meg kell kezdeni a sorszámot, és valószínűleg az is, amivel véget ér.
4160: - A 'wp_posts' 4163 táblázat táblázatszerkezete: DROP TABLE IF EXISTS 'wp_posts'; 4166: TÁBLÁZAT „wp_posts” (4203: - táblázat 'wp_posts' 4206: LOCK TABLES 'wp_posts' WRITE; 4207: / *! 40000 ALTER TABLE 'wp_posts' DISABLE KEYS * /; 4208: INSERT INTO 'wp_posts 'ÉRTÉKEK (1,2,' 2006-09-11 05:07:23 ',' 2006-09-11
Természetesen csak a grep kimenetét egy másik fájlba lehet csatolni:
grep kulcsszó filename.txt> outputfile
Az én esetemben nem akart dolgozni, mert nem tudtam valamilyen okból importálni az eredményül kapott biztonsági másolatot. Szóval egy másik módot találtam a vonalak kivonására, és ez a módszer működött.
sed -n '4160,4209p' howtogeekdb0101140201.bak> kimeneti fájl
Alapvetően a szintaxis ilyen, győződjön meg róla, hogy a -n argumentumot használja, és a második sorszám után adja meg a „p” -t..
sed -n 'FIRSTLINENUMBER, LASTLINENUMBERp' fájlnév> outputfilename
Néhány más módon kiválaszthat egy bizonyos sort a fájl közepén? A „fej” paranccsal a + szám argumentummal lehet olvasni a fájl első x sorában, majd a farok segítségével kivonhatja ezeket a sorokat. Nem a legjobb megoldás, rengeteg rezsi. Egyszerűbb lehetőség? A megosztott paranccsal több fájlba kapcsolhatja a fájlt a kívánt sorszámra, majd a fejléc vagy a farok segítségével kivonhatja a sorokat.
Vagy csak a sed.