Linux端末を使用してファイルの途中から行を削除する方法
あなたがあなた自身のサーバを管理するとき、あなたがやや定期的にする必要があることの一つは、ファイルの途中からものを抽出することです。たぶんそれはログファイルなのか、それとも私がやったようにMySQLバックアップファイルの途中から一つのテーブルを追加する必要があるのか.
行番号を把握するために、単純なgrep -nコマンドを実行しました(-n引数は行番号を出力します)。これは私が抽出するために必要なものを把握することを容易にしました.
grep -n wp_posts howtogeekdb010114.bak | grepもっと
このような結果になります。出力の左側に行番号が表示されます。すべてを「more」にパイプ接続すると、最初の行がスクロールされずに表示されるようになります。これで行番号が始まります。おそらく最後の行番号です。.
4160: - テーブル 'wp_posts'のテーブル構造4163:DROP TABLE IF EXISTS 'wp_posts'; 4166:CREATE TABLE 'wp_posts'(4203: - テーブル 'wp_posts'のデータのダンプ4206:ロックテーブル 'wp_posts' WRITE; 4207:/ *!40000 ALTER TABLE 'wp_posts'無効キー* /; 4208:INSERT INTO 'wp_posts 'VALUES(1,2、' 2006-09-11 05:07:23 '、' 2006-09-11
もちろん、grepの出力を別のファイルにパイプ処理することもできます。
grepキーワードfilename.txt> outputfile
私の場合、それはうまくいきたくありませんでした。なぜなら、私は結果のバックアップを何らかの理由でインポートできなかったからです。だから、私はsedを使って線を抽出する別の方法を見つけました、そしてこの方法はうまくいきました.
sed -n '4160,4209p' howtogeekdb0101140201.bak>出力ファイル
基本的には構文はこのようなもので、必ず-n引数を使用し、2行目の後に「p」を含めます。.
sed -n 'FIRSTLINENUMBER、LASTLINENUMBERp'ファイル名>出力ファイル名
あなたがファイルの途中で特定の行を引き出すことができるいくつかの他の方法?ファイルの最初のx行を読み終えるために+ number引数を指定して「head」コマンドを使用し、次にtailを使用してそれらの行を抽出することができます。最善の選択肢ではなく、多くのオーバーヘッドがあります。もっと簡単なオプション? splitコマンドを使用して、目的の行番号でファイルを複数のファイルに変換してから、headまたはtailを使用して行を抽出できます。.
あるいはsedを使うこともできます.