ウェブサイト検索

これらの10のsedの例は、あなたをLinuxのパワーユーザーにするでしょう


Linuxのパワーユーザーになりたいですか?sedを理解することが役立ちます。これらの10のsedの例から学びましょう。

Linuxマシンを管理する人にとって、テキストファイルの編集や端末出力は日常的な仕事です。sedのようなコマンドラインユーティリティを使用すると、ユーザーは端末ウィンドウから直接テキストファイルの内容を変更することができます。

この記事では、sed コマンドについて詳細に説明し、Linux における sed ユーティリティの力を示すいくつかの重要な例を紹介します。

sedコマンドとは何ですか?

sedコマンドはストリームエディタの略で、Linuxユーザーがファイルやターミナル出力に対してテキストベースの操作を行うことを可能にするコマンドラインツールです。sedを使用することで、ユーザーはテキスト内の特定の単語を検索して置き換えたり、出力の特定の部分を表示したり、ファイルを開かずにテキストファイルを編集したりすることができます。

sedコマンドがサポートする3つの基本操作は次のとおりです:

  1. 挿入
  2. 削除
  3. 置換(検索と置換)

上級者は、sedコマンドを使って正規表現を実装し、テキストストリームをより効率的に編集することもできます。

コマンドの基本的な構文は次の通りです:

sed [options] [pattern] [filepath]

...ここでオプションはコマンドのさまざまな機能を指し、パターンは一致させたい正規表現またはスクリプト、そしてファイルパスはテキストを含むテキストファイルへのパスです。

Linux sedコマンドの10の例

もしあなたが定期的なLinuxユーザーになることを計画しているなら、ファイルを編集し、特定の単語を検索して置き換え、ターミナルの出力をフィルタリングする方法を知っておくことは役立つかもしれません。このセクションでは、確実にあなたをLinuxのパワーユーザーに変えるsedコマンドのいくつかの例を紹介します。

私たちは、投稿のデモンストレーションのために以下のテキストファイルを使用します。

This is a demo text file.
It is an amazing file that will help us all.
The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

1. 複数のラインを表示する

headやtailといったLinuxコマンドは、テキストファイルの最初の10行または最後の10行を出力します。しかし、ファイル内の2つの特定の行の間の内容を取得したい場合はどうでしょうか。そのような状況では、sedコマンドが役に立つかもしれません。

ファイルtextfile.txtの3行目から5行目の内容を出力するには:

sed -n '3,5p' textfile.txt

-n フラグは sed が各サイクルの最後にパターンスペースを表示するのを防ぎます。-n の代わりに --quiet や --silent オプションを使用することもできます。p 引数は print を意味し、一致した行をユーザーに表示するために使用されます。

上記のコマンドをサンプルファイルで実行すると、次の出力が得られます。

The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.

指定された範囲を除いてファイル全体の内容を出力するには、コマンドでpの代わりにdフラグを使用します。

sed '3,5d' textfile.txt

d フラグは、一致した文字列を出力から削除し、残りのコンテンツを表示します。

This is a demo text file.
It is an amazing file that will help us all.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

2. 非連続行を表示する

ファイル内の複数の範囲の間にある非連続行を印刷するには:

sed -n -e '1,2p' -e '5,6p' textfile.txt

出力 :

This is a demo text file.
It is an amazing file that will help us all.
This is another line in the file.
This is the third general line in the file.

-e フラグは、単一のコマンドを使用して複数のアクションを実行するのに役立ちます。

3. 行間にスペースを挿入する

テキストファイルの各行の間に空行を挿入したい場合は、デフォルトのsedコマンドにG引数を使用してください。

sed G textfile.txt

出力に複数の空行を挿入するには、複数のG引数をセミコロン(;)文字で区切って渡します。

sed 'G;G' textfile.txt

4. テキストファイル内の単語を置き換える

特定の単語の各出現を別の単語に置き換えたい場合は、コマンドで sと g引数を使用します。 sedコマンドを使用して単語を置き換える基本的な構文は次のとおりです:

sed s/originalword/replaceword/g filename

上記の構文を使用して、textfile.txtファイル内のamazingという単語をsuperに置き換えることができます:

sed s/amazing/super/g textfile.txt

s 引数は置換を示し、g コマンドは一致したコンテンツを指定された置換コンテンツで置き換えるために使用されます。

sedを使用して単語の2回目の出現を置き換えるには、g引数に数字を渡します。この場合:

sed s/amazing/super/g2 textfile.txt

単語を置き換える際に文字の大文字と小文字を無視したい場合は、gの代わりにgiを使用してください。iはignoreの意味です。

sed s/Amazing/super/gi textfile.txt

範囲内の単語を置き換える

特定の範囲内で単語を置き換えることもできます。

sed '2,5s/amazing/super/g' textfile.txt

6. 一度に複数の置換を実行する

一度に二つ以上の置換を行いたい場合は、コマンドをセミコロン(;)で区切ってください。

sed 's/amazing/super/g;s/command/utility/gi' textfile.txt

システムは次の出力を表示します。

This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

7. 一致が見つかった場合のみ単語を置き換える

sedコマンドを使用して、行に特定の一致が見つかった場合にのみ単語を置き換えることもできます。たとえば、行にorangeという単語が含まれている場合にaをanに置き換えるには:

sed -e '/orange/ s/a/an/g' textfile.txt

上記のコマンドを発行すると、次のように出力されます:

This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is an orange.

この文の「これはりんごです」という行におけるの言葉は、システムがオレンジという言葉を見つけられなかったため置き換えられませんでした。

8. 正規表現を使用して単語を置き換える

正規表現の使い方を知っている人にとって、sedコマンドを使用して文字列に対して操作を行うことは非常に簡単になります。コマンドの力を高めるために正規表現を実装することができます。

単語Amazingまたはamazingのすべての出現をsuperに置き換えるために:

sed -e 's/[Aa]mazing/super/g' textfile.txt

同様に、sedコマンドを使用して特定の操作を実行するために、高度な正規表現も使用できます。

9. パイプを他のコマンドと共に使用する

sedは他のLinuxコマンドと連携させることもできます。例えば、lspciコマンドをsedとパイプでつなぎ、出力の行間に空白を追加することができます。

lspci | sed G

出力の特定の単語を置き換えるには、 ip route show コマンド:

ip route show | sed s/src/source/g

前述のコマンドは、元の単語srcの代わりに単語sourceを置き換えます。

10. オリジナルファイルの編集とバックアップ

システムファイルを扱うときは、変更を加える前に元のファイルのバックアップを取ることが重要です。これにより、何か問題が発生した場合に変更を元に戻すことができます。

元のファイルをsedを使ってバックアップするには、コマンドで-iフラグを使用します。

sed -i'.backup' 's/amazing/super/g' textfile.txt

新しいファイルが textfile.txt.backup という名前で作成されます。diff コマンドを使用して、2つのファイルが異なることを確認できます。

diff textfile.txt textfile.txt.backup

Linuxでsedを使って文字列を編集する

時々、端末でテキストファイルを扱っていると、出力のフォーマットや編集を行って可読性を向上させることが必要になります。Sedとawkは、Linuxのコマンドラインユーティリティで、データを別々の行に分割することでテキストファイルを効率的に操作することを可能にします。

多くのユーザーは、使用できる多くの引数やフラグがあるため、sedコマンドの引数やフラグを覚えるのが難しいと感じています。Linuxコマンドのコマンドラインマニュアルの取得方法を知っていれば、そのような状況から簡単に抜け出すことができます。

関連記事: