GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコマンドラインでファイルから特定の行を削除する

タスクは簡単です。 Linuxターミナルのテキストファイルから特定の行を削除する必要があります。

VimやNanoなどのテキストエディタを使用して、ファイルを入力し、目的の行を削除できます。ただし、このアプローチは、bashスクリプトを使用した自動化には適していません。

代わりに、強力なsedコマンドラインエディターを使用して、特定の条件に一致する行を削除できます。そしてもちろん、シェルスクリプトでsedを使用することもできます。

いくつかの使用例を示しましょう。

⚠️ここに示す例は、元のファイルを即座に変更します。実験を開始する前に、そのファイルのバックアップを作成することをお勧めします。 ファイルからn番目の行を削除します

ファイルの7行目の行番号を削除する必要があるとします。次のようにsedコマンドを使用できます:

sed -i '7d' filename

それがどのように機能するかを説明させてください:

  • -i :このオプションは、インプレース編集を有効にします。デフォルトでは、sedは出力のみを表示します。この-iで オプションの場合、実際のファイルをディスプレイに表示せずに変更します。
  • 7d :ここで7は行番号とd 行の削除を指示します。
  • filename :これは変更したいファイルです。ファイルが他のディレクトリにある場合は、絶対パスまたは相対パスを指定することもできます。

実際の例を示しましょう。これがagatha.txtという名前のサンプルテキストファイルです:

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

このファイルから4行目を削除するには、次を使用します。

sed '4d' agatha.txt

これにより、「Giant'sBread」という行が削除された次の表示になります:

The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies

ここで、Linuxコマンドラインでファイルの最初の行を削除するとします。このようにsedを使用します:

sed -i '1d' filename
💡ファイル自体を変更せずに操作の結果を確認したい場合は、-iを使用しないでください sedコマンドのオプション。

sedを使用して最後の行を削除します

特定の行を削除することを学びましたが、最後の行を削除する必要がある場合はどうなりますか?

wcコマンドを使用してファイル内の合計行数を常に取得し、この数をsedで使用できます。ただし、sedには、ファイルの最後の行を削除する専用の方法があります。もうファイルの数を気にする必要はありません。

sed -i '$d' filename.txt
行の範囲を削除する

前に見たのと同様に、ファイルから一定範囲の行を削除することもできます。

11から15までの行を削除する必要があるとすると、次のような範囲を指定できます。

sed -i '11,15d' filename

11行目と15行目だけでなく、それらの間にある行も削除されることに注意してください。

文字列を含む行を削除します

sedを使用して、特定の文字列を含む、または特定のパターンに一致するすべての行を削除することもできます。

次のコマンドは、「文字列」という単語を含むすべての行を削除します:

sed -i '/string/d' filename

これは大文字と小文字を区別する検索であることに注意してください。通常の文字列の代わりに正規表現パターンを使用することもできます。

単語で始まる行を削除する

特定の単語または文字で始まるすべての行を削除する場合は、次のような正規表現パターンを指定する必要があります。

sed -i '/^word/d' filename

ボーナスのヒント:空の行をすべて削除します

この記事を終了する前に、sedを使用してすべての空の行を削除する方法を簡単に説明します:

sed -i '/^$/d' filename

このクイックヒントが、Linuxコマンドラインのテキストファイルから行を削除するのに役立つことを願っています。

興味がある場合は、sedコマンドラインエディタの詳細をご覧ください:


Linux
  1. LinuxコマンドラインからのGoogleドライブの使用

  2. Linux での sed コマンドの例

  3. コマンドラインから特定のサイズのファイルを作成するにはどうすればよいですか?

  1. Linuxでコマンドラインからファイルとディレクトリを削除する方法

  2. Linuxでコマンドラインからファイルを分割して結合する方法

  3. Linux - 特定の行からファイルの最後までの grep

  1. Linuxのコマンドラインからトレントを検索

  2. Linuxコマンドラインでファイルの特定の行を表示する方法

  3. Linuxwcコマンド