この記事は Unix Sed チュートリアル シリーズの一部です。以前の記事では、sed の印刷操作、sed の削除操作、および sed の検索と置換について説明しました。
この記事では、あるファイルの一部を抽出し、sed を使用して別のファイルに書き込む方法を確認しましょう。
Sed は、パターン スペース データを新しいファイルに書き込む「w」コマンドを提供します。
Sed は、最初の入力行を読み取る前に、指定されたファイル名を作成または切り捨て、ファイルを閉じて再度開くことなく、すべての一致をファイルに書き込みます。
Syntax: #sed 'ADDERSSw outputfile' inputfilename #sed '/PATTERN/w outputfile' inputfilename
Sed は行を読み取り、それをパターン バッファーに配置し、指定されたコマンドに従って、指定された出力ファイルにパターン バッファーを書き込みます。
最初に、以下で説明するすべての例で使用される 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.
sed での書き込みコマンドの例をいくつか見てみましょう。
1.ファイルの 1 行目を書き込み
この例では、1 (アドレス) は入力の最初の行を参照し、w はパターン バッファーを出力ファイル「output.txt」に書き込みます。
$ sed -n '1w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc.
2.ファイルの最初と最後の行を書き込む
この例では、1 と $ はそれぞれ最初と最後の行を参照します。
$ sed -n -e '1w output.txt' -e '$w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 10.Windows- Sysadmin, reboot etc.
3.パターン Storage または Sysadmin に一致する行を書き込みます
この例では、sed コマンドはパターン「Storage」または「Sysadmin」に一致する行を書き込みます。
$ sed -n -e '/Storage/w output.txt' -e '/Sysadmin/w output.txt' thegeekstuff.txt $ cat output.txt 1. Linux - Sysadmin, Scripting etc. 5. Storage 10.Windows- Sysadmin, reboot etc.
4.パターンが一致する行をファイルの最後まで書き込みます
この例では、/Storage/,$ は Storage からファイルの末尾までの行の一致を表します。
$ sed -n '/Storage/,$w output.txt' thegeekstuff.txt $ cat output.txt 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.パターンに一致する行と一致する次の 2 行を記述します
この例では、send コマンドは「Storage」に一致する行とその隣の 2 行を書き込みます。
$ sed -n '/Storage/,+2w output.txt' thegeekstuff.txt $ cat output.txt 5. Storage 6. Cool gadgets and websites 7. Productivity (Too many technologies to explore, not much time available)
Pascal Hello World の例:Unix OS で Pascal プログラムを作成、コンパイル、実行する方法
書評:Perl Best Practices by Damian Conway