複数のデータベースに相当するデータを含む約 23,000 行の SQL ダンプがあります。このファイルの特定のセクション (つまり、単一のデータベースのデータ) を抽出し、新しいファイルに配置する必要があります。必要なデータの開始行番号と終了行番号はわかっています。
たとえば、ファイルから 16224 行目から 16482 行目までのすべての行を抽出し、新しいファイルにリダイレクトする Unix コマンド (または一連のコマンド) を知っている人はいますか?
ベストアンサー1
sed -n '16224,16482p;16483q' filename > newfile
からsed マニュアル:
p - パターン スペースを (標準出力に) 出力します。このコマンドは通常、-n コマンドライン オプションと組み合わせてのみ使用されます。
n - 自動印刷が無効になっていない場合は、パターン スペースを印刷し、その後、パターン スペースを次の入力行に置き換えます。入力がなくなると、sed はそれ以上のコマンドを処理せずに終了します。
q -
sed
これ以上のコマンドや入力を処理せずに終了します。-n オプションで自動印刷が無効になっていない場合は、現在のパターン スペースが印刷されることに注意してください。
sed スクリプト内のアドレスは、次のいずれかの形式になります。
行番号を指定すると、入力内のその行のみに一致します。
アドレス範囲は、2 つのアドレスをコンマ (,) で区切って指定できます。アドレス範囲は、最初のアドレスが一致する行から始まり、2 番目のアドレスが一致するまで続きます (範囲を含む)。