序文 通常、ファイル内の特定の行を削除したい場合は、まずファイルを開き、削除する内容を見つけて、これらの行を選択して Delete キーを押して削除します。データの量が少ない場合は、これは問題になりません。しかし、ファイル内のデータ行数が多くなり、データが複雑になると、上記の方法をそのまま使用するとひどいことになります。そのため、本日の記事では、データが大きく複雑な場合でも、sed コマンドライン ツールを使用して、ファイル内の特定のコンテンツ行を効率的かつエレガントに削除する方法を説明します。 sed は Stream Editor の略称です。Linux の基本的なテキスト変換に使用されます。ファイル操作の重要なコマンドです。したがって、テキストの削除にも使用できます。 以下は、ほとんどの使用シナリオを網羅した sed コマンドの使用例です。これらの例により、最も単純なものから最も複雑なものまで sed コマンドを学習でき、ファイルの特定の行を簡単かつ効率的に削除できるようになります。 まず、デモ ファイル sed-demo.txt を準備します。 # cat sed-demo.txt 1 Linux オペレーティングシステム 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE 次に、sed コマンドを試してみましょう。 注: -i は、結果を端末に表示せずにファイル操作を直接実行することを意味します。これはデモンストレーションなので、ここでは -i オプションは使用しません。実際には -i オプションを使用してください。 1. 行を削除する まず、最初の行や最後の行 (実際には N 行目) などの行を削除することから始めます。 行 N を削除するコマンドの形式は次のとおりです。 sed 'Nd' ファイル 最初の行を削除してみましょう: # sed '1d' sed-demo.txt 削除後: 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE 簡単ですよね?ここでは詳しく説明しません。コマンド内の 1 を削除したい行に置き換えるだけです。 ここで問題になるのは、最後の行を表すのにどの数字が使用されるかということです。ここに皆さんへのヒントがあります。ドル記号 $ を使用して終了を表すことができるため、最後の行を削除するコマンドは次のように記述できます。 # sed '$d' sed-demo.txt 削除後: 1 Linux オペレーティングシステム 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 2. いくつかの行を削除する sed コマンドは連続した行または連続していない行を削除できます。 連続する行を削除します。たとえば、5 行目から 7 行目を削除します。 # sed '5,7d' sed-demo.txt 削除後: 1 Linux オペレーティングシステム 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 8 デビアン 9. ウブントゥ 10 オープンSUSE 連続していない行を削除します。たとえば、1 行目、5 行目、9 行目、最後の行を削除します。 # sed '1d;5d;9d;$d' sed-demo.txt 削除後: 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 6 アーチリナックス 7 セントOS 8 デビアン さらに、論理 NOT! と組み合わせて使用することもできます。たとえば、行 3 から 6 を除くすべての行を削除します。 # sed '3,6!d' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 3. 空白行を削除する sed はファイルの空白行の削除もサポートしています。コマンドは次のとおりです。 # sed '/^$/d' sed-demo.txt 削除後: 1 Linux オペレーティングシステム 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE ヒント:ここで 2 つのスラッシュ // の間の表現は、テキストのマッチングの役割を果たします。正規表現の使用方法を参照してください。以下は学習を深めるためによく使われる方法です。 4. 特定の文字を含む行を削除する サンプル ファイル内の System という単語を含む行を削除したいとします。/System/ を使用すると、System という文字列が出現するたびに一致するようになります。具体的なコマンドは次のとおりです。 # sed '/System/d' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE それだけでなく、次のコマンドのように論理条件を追加することもできます。 # sed '/System\|Linux/d' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE 記号 \| は論理 OR を表します。上記のコマンドは、テキストに System または Linux を含むすべての行を削除することを意味します。 5. 特定の文字で始まる行を削除する まず、より良いデモンストレーションのために別のサンプル ファイル sed-demo-1.txt を作成します。その内容は次のとおりです。 # cat sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム レッドヘル レッドハット フェドーラ デビアン ウブントゥ アーチリナックス - 1 2 – マンジャロ 3 4 5 6 前述の通り、$ 記号は終了を表すものとして理解できますが、開始を表す文字はあるのでしょうか?答えは「はい」です。ここでは、始まりを表すために ^ 記号を使用できます。 次に、特定の文字で始まる行を削除する場合、たとえば、R で始まる行を削除する場合は、次のコマンドを使用します。 # sed '/^R/d' sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム フェドーラ デビアン ウブントゥ アーチリナックス - 1 2 – マンジャロ 3 4 5 6 質問は、たとえば、R または F で始まる行を削除したい場合、コマンドを 2 回実行する必要があるかどうかです。もっと多い場合は、複数のコマンドを実行する必要があるのではないでしょうか?書き方は簡単です。これらの文字を角括弧 [] で囲んで書くだけです。 # sed '/^[RF]/d' sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム デビアン ウブントゥ アーチリナックス - 1 2 – マンジャロ 3 4 5 6 上記のコマンドは、R または F で始まる行を削除するために使用されます。 6. 特定の文字で終わる行を削除する 特定の文字で終わる行を削除する場合にも同じ原理が適用されます。たとえば、m で終わる行を削除するには、次のようにします。 # sed '/m$/d' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE x または m で終わる行を削除するには、次のように記述します。 # sed '/[xm]$/d' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE 7. 大文字で始まる行を削除する ここで再び疑問が生じますが、大文字で始まる行をすべて削除したい場合はどうすればよいでしょうか?上記の方法によると、AからZまでの26文字すべてを[ ]に書き込む必要がありますか?実際、これを行う必要はなく、A と Z の間に - を追加するだけで済みます。 # sed '/^[A-Z]/d' sed-demo-1.txt 削除後: デビアン ウブントゥ 2 – マンジャロ 3 4 5 6 あなたはこれを読んだ後、他にも同様の使用法を思いつくほど賢いでしょう。次のコマンドを見て、思いつくものがあるかどうか確認してみてはいかがでしょうか。 8. アルファベット文字を含む行を削除する # sed '/[A-Za-z]/d' sed-demo-1.txt 削除後: 3 4 5 6 9. 数字を含む行を削除します # sed '/[0-9]/d' sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム レッドヘル レッドハット フェドーラ デビアン ウブントゥ さらに、この例では、^ と $ を追加して、3 つの違いをよりよく確認できます。 # sed '/^[0-9]/d' sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム レッドヘル レッドハット フェドーラ デビアン ウブントゥ アーチリナックス - 1 # sed '/[0-9]$/d' sed-demo-1.txt 削除後: Linux オペレーティングシステム Unix オペレーティングシステム レッドヘル レッドハット フェドーラ デビアン ウブントゥ 2 – マンジャロ 10. その他 実際、削除したいファイルの内容はより具体的であり、単純な条件ではニーズを満たすことができないため、sed はより複雑な条件の組み合わせもサポートしています。たとえば、1 行目から 6 行目にある Linux という単語を削除する場合は、次のようにします。 # sed '1,6{/Linux/d;}' sed-demo.txt 削除後: 2 Unix オペレーティングシステム 3 レッドヘル 4 レッドハット 5 フェドーラ 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE System を含む行と次の行を削除します。 # sed '/System/{N;d;}' sed-demo.txt 削除後: 3 レッドヘル 4 レッドハット 5 フェドーラ 6 アーチリナックス 7 セントOS 8 デビアン 9. ウブントゥ 10 オープンSUSE 要約する sed コマンドを使用してファイルの特定の行を効率的に削除する方法についての記事はこれで終わりです。 sed コマンドを使用してファイルの特定の行を削除する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vue3 カプセル化された虫眼鏡コンポーネントのサンプルコード
>>: 例によるMySql CURRENT_TIMESTAMP関数の分析
この記事の例では、ボタンをクリックすることで4桁のランダムな検証コードを生成するjsの具体的なコード...
目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...
RocketMQ は、Alibaba が設計した分散型のキューベースのメッセージング ミドルウェア...
HTML徹底解析(14)特殊文字 ■ よく使われる特殊文字 HTMLタグを知っていれば、特殊文字の使...
Shtml と asp は似ています。shtml という名前のファイルでは、asp の命令と同様に、...
今日、Alibaba Cloudからディスク警告通知を受け取りました。確認したところ、100Gのスペ...
第1章 ソースコードのインストールRPM パッケージは特定のシステムとプラットフォームに応じて指定さ...
目次1. 矢印関数の使用1. 通常関数から矢印関数へ2. 中括弧を省略してリターンする3. 括弧を省...
目次1. 同期AJAX 2. 非同期AJAX 3. ユーザーのクリックを追跡する4. リバウンドトラ...
親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...
CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...
目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...
効果確認アドレス:ツアープラン(uplanok.com) コード: img{幅: 100%;境界線の...
例示するフロントエンド開発では、セルの幅を制限し、コンテンツが制限を超える部分に省略記号を表示する必...
目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...