Sedコマンドまたはストリームエディタ Linux/Unixシステムが提供する非常に強力なユーティリティです。主にテキスト置換に使用されます 、検索して置換しますが、挿入などの他のテキスト操作も実行できます 、削除 、検索 SEDを使用すると、実際にファイルを開かなくても、完全なファイルを編集できます。 Sedは正規表現の使用もサポートしているため、sedはさらに強力なテスト操作ツールになります。 。
この記事では、いくつかの例を参考にして、SEDコマンドの使用方法を学習します。 sedコマンドを使用するための基本的な構文は次のとおりです。
sedOPTIONS…[スクリプト][入力ファイル…]
それでは、いくつかの例を見てみましょう。
例:1)ファイルのテキストの一部を表示する
sedを使用すると、ファイル全体を表示するのではなく、ファイルの一部のみを表示できます。ファイルの一部の行を表示するには、次のコマンドを使用します
[[email protected] ~]$ sed -n 22,29p testfile.txt
ここで、オプション「n」はファイル全体の印刷を抑制し、オプション「p」は22から29までの行行のみを印刷します。
例:2)一部の行を除くすべてを表示する
一部を除くファイルのすべてのコンテンツを表示するには、次のコマンドを使用します。
[[email protected] ~]$ sed 22,29d testfile.txt
オプション「d」は、上記の行を出力から削除します。
例:3)N行目から3行ごとに表示
行番号2またはその他の行から始まる3行ごとのコンテンツを表示するには、次のコマンドを使用します
[[email protected] ~]$ sed -n '2~3p' file.txt
例:4)sedコマンドを使用して行を削除する
ファイルからsedを含む行を削除するには、次のコマンドを使用します。
[[email protected] ~]$ sed Nd testfile.txt
ここで、「N」は行番号であり、オプション「d」は指定された行番号を削除します。ファイルの最後の行を削除するには、
を使用します[[email protected] ~]$ sed $d testfile.txt
例:5)行の範囲を削除する
ファイルから行の範囲を削除するには、
を実行します。[[email protected] ~]$ sed '29,34d' testfile.txt
これにより、testfile.txtファイルから29行目から34行目が削除されます。
例:6)上記以外の行を削除する
上記の行以外の行をファイルから削除するには、「!」を使用します
[[email protected] ~]$ sed '29,34!d' testfile.txt
ここでは、「!」オプションが使用されていないため、条件が逆になります。つまり、記載されている行は削除されません。 29〜34以外のすべての行は、ファイルtestfile.txtから削除されます。
例:7)空白行/スペースの追加
空白以外のすべての行の後に空白行を追加するには、オプション「G」を使用します
[[email protected] ~]$ sed G testfile.txt
例:8)sedを使用して文字列を検索および置換する
ファイルから文字列を検索して置き換えるには、次の例を使用します
[[email protected] ~]$ sed 's/danger/safety/' testfile.txt
ここで、オプション「s」は「danger」という単語を検索し、最初に出現する場合にのみ、すべての行で「safety」に置き換えます。
例:9)sedを使用してファイル全体から文字列を検索および置換します
ファイルから単語を完全に置き換えるには、オプション「g」を「s」に置き換えます
[[email protected] ~]$ sed 's/danger/safety/g' testfile.txt
例:10)文字列パターンのn番目のオカレンスを置き換えます
ファイルからn番目に出現する文字列を置き換えることもできます。 2回目の発生時にのみ「危険」を「安全」に置き換えるように
[[email protected] ~]$ sed ‘s/danger/safety/2’ testfile.txt
ファイル全体のすべての行の2番目の出現で「危険」を置き換えるには、
を使用します。[[email protected] ~]$ sed 's/danger/safety/2g' testfile.txt
例:11)特定の行の文字列を置き換える
特定の行からのみ文字列を置き換えるには、
を使用します[[email protected] ~]$ sed '4 s/danger/safety/' testfile.txt
これは、ファイルの4行目の文字列のみを置き換えます。 1行ではなく、さまざまな行について言及することもできます。
[[email protected] ~]$ sed '4,9 s/danger/safety/' testfile.txt
例:12)一致した検索の前後に行を追加します
パターンが一致するたびにコンテンツを含む新しい行を追加するには、オプション「a」を使用します。
[[email protected] ~]$ sed '/danger/a "This is new line with text after match"' testfile.txt
すべてのパターンが一致する前にコンテンツを含む新しい行を追加するには、オプション「i」を使用します
[[email protected] ~]$ sed '/danger/i "This is new line with text before match" ' testfile.txt
例:13)一致したパターンで行全体を変更する
検索パターンが一致したときに行全体を新しい行に変更するには、sedでオプション「c」を使用する必要があります
[[email protected] ~]$ sed '/danger/c "This will be the new line" ' testfile.txt
したがって、パターンが「危険」と一致すると、行全体が上記の行に変更されます。
sedの高度なオプション
これまではsedで単純な式のみを使用していましたが、次に正規表現でsedの高度な使用法について説明します。
例:14)複数のsedコマンドの実行
複数のsed式を実行する必要がある場合は、オプション「e」を使用してsedコマンドをチェーンできます。
[[email protected] ~]$ sed -e 's/danger/safety/g' -e 's/hate/love/' testfile.txt
例:15)ファイルを編集する前にバックアップコピーを作成する
編集する前にファイルのバックアップコピーを作成するには、オプション「-i.bak」を使用します
[[email protected] ~]$ sed -i.bak -e 's/danger/safety/g' testfile.txt
これにより、拡張子が.bakのファイルのバックアップコピーが作成されます。必要に応じて、他の拡張機能を使用することもできます。
例:16)パターンで始まりパターンで終わるファイル行を削除する
特定の文字列で始まり、別の文字列で終わる行を削除するには、
を使用します。[[email protected] ~]$ sed -e 's/^danger.*stops$//g' testfile.txt
これにより、開始時に「危険」、最後に「停止」が含まれる行が削除され、間に任意の数の単語を含めることができます。「。*」はその部分を定義します。
例:17)行の追加
sedと正規表現を含むすべての行の前にコンテンツを追加するには、
を使用します。[[email protected] ~]$ sed -e 's/.*/testing sed &/' testfile.txt
そのため、すべての行の前に「testingsed」があります。
例:18)コメントされたすべての行と空の行を削除する
コメント付きのすべての行、つまり#とすべての空の行を削除するには、
を使用します。[[email protected] ~]$ sed -e 's/#.*//;/^$/d' testfile.txt
コメント行のみを削除するには、
を使用します[[email protected] ~]$ sed -e 's/#.*//' testfile.txt
例:19)/ etc/passwdからすべてのユーザー名のリストを取得
/ etc / passwdファイルからすべてのユーザー名のリストを取得するには、
を使用します。[[email protected] ~]$ sed 's/\([^:]*\).*/\1/' /etc/passwd
完全なリストすべてのユーザー名が出力として画面に生成されます。
例:20)sedコマンドでシステムリンクの上書きを防止する
「sed-i」コマンドは、システムリンクを削除し、リンクファイルの代わりに通常のファイルのみを作成することが知られています。したがって、このような状況を回避し、「 sed -i ‘リンクを破棄しないようにするには、‘ –follow-symklinksを使用します ‘実行中のコマンドのオプション。
CentOSまたはRHELサーバーでSELinuxを無効にしたい場合を考えてみましょう
[[email protected] ~]# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
これらはsedを示すいくつかの例であり、これらのリファレンスを使用して、必要に応じてそれらを使用できます。この記事や記事に関連する質問がある場合は、私たちと共有してください。
また読む :Linuxでファイルを安全に転送するための14のSCPコマンドの例