Linuxの下のsedコマンド使用の詳細
sedはstream editorの略称、すなわちストリームエディタである。一度に1行の内容を処理し、処理時に現在処理されている行を一時バッファに格納して「モード空間」pattern spaceと呼び、次にsedコマンドでバッファの内容を処理し、処理が完了したらバッファの内容をスクリーンに送る。次に、ファイルの最後まで次の行を処理します。リダイレクトストレージ出力を使用しない限り、ファイルの内容は変更されません。
構文の使用 コードのコピーsed [option] 'command' input_file
-nは静かなsilentモードを使用します(なぜ-sではないのか分かりません)。一般sedの使い方では、stdinからのすべてのコンテンツが画面に表示されます。しかし、-nパラメータを加えると、sed特殊処理された行(または動作)のみが列挙される。
-eは直接命令列モードでsedの動作編集を行う。-fはsedの動作を直接1つのファイルに書き、-f filenameはfilename内のsedコマンドを実行することができる。
-rはsedコマンドに拡張の正規表現(デフォルトはベースの正規表現)をサポートさせる。-i画面から出力されるのではなく、読み込んだファイルの内容を直接変更します。
一般的なコマンドは次のとおりです。
a:追加行append、aの後ろに文字列s(複数行の文字列はnで区切ることができる)が続くと、現在選択されている行の後ろに文字列sが加算されます。
コードのコピー
[qifuguang@winwill~]$ cat test.txt
例1 コードのコピー[qifuguang@winwill~]$ sed '1a \add one' test.txt
この例の役割は,1行目以降に文字列「add one」を増やし,出力から具体的な効果を見ることができる.
例2
コードのコピー
[qifuguang@winwill~]$ sed '1,$a \add one' test.txt
例3
コードのコピー
[qifuguang@winwill~]$ sed '/first/a \add one' test.txt
例4 コードのコピー[qifuguang@winwill~]$ sed '/^ha.*day$/a \add one' test.txt
iコマンド(行挿入)
iコマンドの使用方法はaコマンドと同様で、一致する行の前に文字列を挿入するだけなので、上記のaコマンドの例のaをiに直接置き換えるだけで、ここではくどくありません。
例5
コードのコピー
[qifuguang@winwill~]$ sed '$c \add one' test.txt
例6
コードのコピー
[qifuguang@winwill~]$ sed '4,$c \add one' test.txt
例7
コードのコピー
[qifuguang@winwill~]$ sed '/^ha.*day$/c \replace line' test.txt
例8
コードのコピー
[qifuguang@winwill~]$ sed '/^ha.*day$/d' test.txt
例9
コードのコピー
[qifuguang@winwill~]$ sed '4,$d' test.txt
例10
コードのコピー
[qifuguang@winwill~]$ sed -n '4,$p' test.txt 例11コードのコピー
[qifuguang@winwill~]$ sed -n '/^ha.*day$/p' test.txt
sコマンド(置換文字列)
実際の運用ではsコマンド式が最もよく用いられる.
例12
コードのコピー
[qifuguang@winwill~]$ sed 's/line/text/g' test.txt
例十三
コードのコピー