sed チュートリアルの最初の部分で、アドレスとパターンを使用してファイル行を印刷する方法を確認しましょう。
今後数週間で、いくつかの素晴らしい sed チュートリアルと例を投稿する予定です。
Unix Sed の紹介
- sed は、「非対話型」のストリーム指向エディターです。 「非インタラクティブ」であるため、必要に応じて編集を自動化するために使用できます。
- sed という名前はストリーム エディターの略語であり、ユーティリティはそのコマンドの多くを ed ライン エディターから派生させています (ed は最初の UNIX テキスト エディターでした)。
- これにより、vi や emacs を開かなくても、複数のファイルを編集したり、一般的な編集操作を実行したりできます。
- sed は、ファイルまたは標準入力から読み取り、標準出力に出力します。
- sed には、パターン バッファとホールド バッファと呼ばれる 2 つのバッファがあります。どちらも最初は空です。
Unix Sed 作業方法論
これを 1 実行サイクルと呼びます。ファイル/入力の最後に到達するまでサイクルが続きます。
<オール>Sed での印刷操作
Linux Sed コマンドを使用すると、行番号またはパターン一致に基づいて特定の行のみを印刷できます。 「プ」 パターンバッファからデータを印刷するためのコマンドです。
パターン空間の自動出力を抑制するには、sed で -n コマンドを使用します。 sed -n オプションは、明示的な印刷要求が見つからない限り、何も印刷しません。
Syntax: # sed -n 'ADDRESS'p filename # sed -n '/PATTERN/p' filename
最初に、以下で説明するすべての例で使用される geekstuff.txt ファイルを作成しましょう。
# cat thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 2. Databases - Oracle, mySQL etc. 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
5 Sed ADDRESS 形式の例
Sed アドレス形式 1:NUMBER
これは、入力の N 行目のみに一致します。
# sed -n ‘N’p filename
たとえば、3p は入力ファイル thegeekstuff.txt の 3 行目を次のように出力します。
# sed -n '3'p thegeekstuff.txt 3. Hardware
Sed アドレス形式 2:NUMBER1~NUMBER2
M~N に「p」コマンドを指定すると、M 行目から N 行ごとに出力されます。
# sed -n ‘M~N’p filename
たとえば、3~2p は、以下に示すように、3 行目から 2 行ごとに印刷します。
# sed -n '3~2'p thegeekstuff.txt 3. Hardware 5. Storage 7. Productivity (Too many technologies to explore, not much time available) 9. Software Development
Sed アドレス形式 3:START,END
M,N に「p」コマンドを指定すると、M 行目から N 行目に出力されます。
# sed -n ‘M,N’p filename
たとえば、4,8p は、入力ファイル thegeekstuff.txt の 4 行目から 8 行目までを出力します
# sed -n '4,8'p thegeekstuff.txt 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design
Sed アドレス形式 4:'$' 最終行
$ と「p」コマンドは、入力の最後の行のみに一致します。
# sed -n ‘$’p filename
たとえば、$p は以下に示すように最後の行のみを出力します。
# sed -n '$'p thegeekstuff.txt 10.Windows- Sysadmin, reboot etc.
Sed アドレス形式 5:NUMBER,$
N,$ に「p」コマンドを指定すると、N 行目からファイルの末尾までが出力されます。
# sed -n ‘N,$p’ filename
たとえば、4,$p は 4 行目からファイルの最後までを出力します。
# sed -n '4,$p' thegeekstuff.txt 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
6 Sed PATTERN フォーマットの例
Sed パターン フォーマット 1:PATTERN
PATTERN は UNIX の正規表現である可能性があります。以下のコマンドは、指定されたパターンに一致する行のみを出力します。
# sed -n /PATTERN/p filename
たとえば、次の例では、パターン「Sysadmin」に一致する行のみが出力されます。
# sed -n /Sysadmin/p thegeekstuff.txt 1. Linux - Sysadmin, Scripting etc. 10.Windows- Sysadmin, reboot etc.
Sed パターン フォーマット 2:/PATTERN/,ADDRESS
# sed -n ‘/PATTERN/,Np’ ファイル名
たとえば、次の例では、パターンに一致する行を入力から N 番目の行に出力します。 3 行目はパターン「ハードウェア」に一致するため、3 行目から 6 行目までを印刷します。
# sed -n '/Hardware/,6p' thegeekstuff.txt 3. Hardware 4. Security (Firewall, Network, Online Security etc) 5. Storage 6. Cool gadgets and websites
Sed パターン フォーマット 3:ADDRESS,/PATTERN/
入力の N 行目から、パターンに一致する行までを出力します。パターンが一致しない場合は、入力の最後まで出力します。
# sed -n ‘N,/PATTERN/p’ filename
たとえば、4 行目はパターン「セキュリティ」に一致するため、3 行目から 4 行目までを印刷します。
# sed -n '3,/Security/p' thegeekstuff.txt 3. Hardware 4. Security (Firewall, Network, Online Security etc)
Sed パターン形式 4:/PATTERN/,$
指定されたパターンに一致する行からファイルの末尾までを出力します。
# sed -n ‘/PATTERN/,$p’ filename
# sed -n '/Website/,$p' thegeekstuff.txt 8. Website Design 9. Software Development 10.Windows- Sysadmin, reboot etc.
Sed パターン フォーマット 5:/PATTERN/,+N
パターンに一致する行と、一致した行に続く次の N 行を出力します。
# sed -n ‘/PATTERN/,+Np’ filename
たとえば、以下は、パターン /Storage/ に一致する 5 行目と、/Storage/ に続く次の 2 行を出力します。
# sed -n '/Storage/,+2p' thegeekstuff.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)
Sed パターン形式 6:/PATTERN/,/PATTERN/
2 つの正規表現の間のファイルのセクション (一致した行を含む) を出力します。
# sed -n ‘/P1/,/P2/p’ filename
たとえば、5 行目は「ストレージ」に一致し、8 行目は「デザイン」に一致するため、5 ~ 8 行目が出力されます。
# sed -n '/Storage/,/Design/p' thegeekstuff.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available) 8. Website Design