sedを使用してファイルから特定の行を削除する方法

27つまたは複数のファイルから特定の行を削除する必要がある場合があります。たとえば、ファイルのリスト全体があり、これらすべての行#27を削除する必要があります(行#XNUMXはACLの行です)。 、norm、rule、configuration)、ファイルごとに編集することも、コマンドを使用して必要なことを実行することもできます sed およびbashスクリプト(オプション)。

しかし、少し単純な単一のファイルを試してみましょう。

ファイルがあります distros-deb.txt これが含まれています:

Debianの

クブントゥ

archlinux

ソラス

ミント

言い換えれば、ファイル distros-deb.txt ここにDebianベースのディストロを配置しますが、3行目には明らかにDebianとは関係のないディストロである「archlinux」があるので、その行を削除する必要があります。 そのファイルの3行目を削除するために、次のように配置します。

sed "3d" distros-deb.txt > distros-deb-ok.txt

この行の説明はやや簡単です。 のどが渇いた「3D」 3行目を削除することを示しています。 distros-deb.txt 作業するファイルを指定します。つまり、このファイルの3行目を削除します。ここまで、 Enterキーを押すと、必要なものが表示されますが、ターミナルに表示されます。 > distros-deb-ok.txt 結果をターミナルに表示する代わりに、この名前のファイルに入れることを示しています。

簡単なことは何ですか?

また、使用を避けることができます > distros-deb-ok.txt の適切なパラメータを使用する sed、パラメータ -i

つまり、ファイルから行を削除して同じ名前で(別のファイルではなく)保存する場合は、パラメーターを追加するだけです。 -i :

sed -i "3d" distros-deb.txt

これにより、distros-deb.txtから3行目が削除され、保存されます。

行の範囲が必要な場合、つまり、行#3だけでなく、#4と#5も削除する場合はどうなりますか? これを実現するために、3から5の範囲を設定します。

sed -i "3,5d" distros-deb.txt

そしてそれは私にdebianとkubuntuだけを表示します😀

では、合計行数がわからないときに、2行目から最後の行まで削除したい場合はどうすればよいですか?

ドル記号を使用するだけです-»$

sed -i "2,$d" distros-deb.txt

最初の行から#4までを削除したい場合は、値1を先頭に置くだけです。

sed -i "1,4d" distros-deb.txt

これがすべてであり、タスクを自動化するbashスクリプトを作成し、構成ファイルの行を変更および削除する必要がある場合に非常に役立つヒントです。 sed o パール、そして排除するだけでなく、私たちはすでにsedでそれを行う方法を知っています😉

よろしく


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

16コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   mss-devel

    非常に良い貢献😉

    1.    KZKG ^我愛羅

      ありがとう

      ちなみに、今すぐメールが届きましたのでお答えします😀

      よろしく

  2.   名無し

    ターミナル、サーバー、ssh接続の大祭司として私はあなたのところに来ました。素晴らしいKZKG ^ Gaara、そして私はあなたに尋ねます:異なるネットワーク上の3つのリモートマシン間のssh接続を使用して共有できるようにする私の無知のレベルのチュートリアルはどこで入手できますかテキストファイル、pdf、画像と音声(mpXNUMX)…。

    🙂

    真剣に、この点について教えていただけますか?私はXNUMX台のマシンを持っています。XNUMX台は職場に、もうXNUMX台は自宅にあり、それらの間にssh接続が必要です(私が理解しているように、sshではマシン間でコンテンツを共有できますよね?)。
    そして、私が間違っている場合、どのアプリケーションをお勧めしますか?
    そして、この点に関する基本的なチュートリアルはどこにありますか?

    1.    -スパイカー-

      scp。

      scp user @ machine_address:path user @ machine_address:path。

      cp、source-> destinationと同じ構文。

  3.   F3niX

    あなたは男に現れました、あなたは失われました。

  4.   ホアキン

    良いヒント!

  5.   LycusHackerEmo

    興味深いヒント…xD

    太字のテキストを目立たせるものを知っていますか?
    つまり、辞書であるtxtファイルがあり、10000行を超えており、「:」の一時停止ポイントの前にある特定のテキストを強調表示して、XNUMXつずつ実行するのは多すぎます。

    1.    KZKG ^我愛羅

      こんにちは、

      txtファイルは、その名前が示すようにプレーンテキストです...プレーン、フォーマットなどがないので、申し訳ありませんが、あなたが求めることはできないと思いますか? 🙁

      よろしく

      1.    アカ

        実際には可能ですが、宛先の形式を知っている必要があります。
        pe:
        echo $(echo "Robert:Hello。Changehere" | sed's / \ ./。\\ e [40; 31m /; s / \:/:\\ e [40; 35m / ')
        それは対処の問題です。
        使用できる削除のもう1つの方法は、sed '/' $ XNUMX '/ d'ですが、reを確認する必要があります。

        1.    LycusHackerEmo

          次に、*。odtへの保存を終了します

          LibreOfficeでそれを行う簡単な方法はありませんか?

  6.   ロロ

    行の一部を削除して残りを残していただけませんか?

    特定の行の単語の前にあるすべてのものを削除したいとします。

    または、その単語に続くすべてを削除します。

    1.    アカ

      はい、それはregexを引っ張る問題です(必要に応じてman sed -r、–regexp-extended)
      私が見つけたものから始めます
      エコー«ロバート:こんにちは。 ここで変更»| sed's / Change // '
      明確に定義されたパターンと。 (XNUMX文字)および*(複数)
      後:
      エコー«ロバート:こんにちは。 ここで変更»| sed's /変更。* // '
      前:
      エコー«ロバート:こんにちは。 ここで変更»| sed's/。*変更// '
      単語が表示されることが重要な場合
      エコー«ロバート:こんにちは。 ここで変更»| sed's /変更。* /変更/ '
      以上より手の込んだ
      ロバートを含む行で変更後に何が起こるか
      echo -e«フリッツ:こんにちは。 ここで変更\ nRobert:こんにちは。 ここで変更»| sed '/ Robert / s / Cambio。* //'
      または最初のようにXNUMX行目を取り、残りを処理します
      echo -e«フリッツ:こんにちは。 ここで変更\ nRobert:こんにちは。 ここで変更\ nその他»| sed -e 2d -e's /変更。* // '
      echo -e«フリッツ:こんにちは。 ここで変更\ nRobert:こんにちは。 ここで変更\ nその他»| sed '2d; s/Change。*//'

      1.    ロロ

        おかげで、それは私にとって非常に便利です。

  7.   MSX

    私が好きな素敵な記事、SysAdminはなんて素晴らしいのでしょう!
    sed、awek、perl、grep、tail、head、 "Emacs"、その他多くの重要なツールがなければ、私たちの生活はどうなるでしょうか。

  8.   リズベス・オラルベス

    おかげで、それは非常に役に立ちました。

  9.   ペルニ

    こんにちは。同じコマンドでファイルから1,4、10、XNUMX行目を削除するにはどうすればよいですか。