使い方
参考:
sed – テキストの置換処理を得意とするスクリプト言語 | bioinformatics
sed コマンド | コマンドの使い方(Linux) | hydrocul のメモ
あえていうほどでもない sed 入門 | TECHSCORE BLOG
sed コマンド 正規表現を使って文字を置き換える | @IT
ドキュメント
参考:
sed – a stream editor (gnu.org)
オプション
参考:
Command-Line Options | sed (gnu.org)
メタ文字
\d
:[0-9]
\w
:[0-9a-zA-Z_]
参考:
sed の正規表現で \w \d \s を実現する方法 | 小粋空間
文字クラス
参考:
Character Classes and Bracket Expressions | sed (gnu.org)
POSIX
- スペース:
[[:space:]]
参考:
How to match whitespace in sed? – Super User
最短一致
sed には最短一致の機能は存在しない。代わりに、クラスの否定を使う。
[^X]+
:1つ以上の X
以外の文字にマッチする。
参考:
sed で置換する際に最短一致で指定をする | 俺的備忘録 〜なんかいろいろ〜
最長一致、最短一致 についての考察 | ソーシャルゲーム基盤 運用側から見渡す解像度
後方参照
置換の際に、(.*)
などの丸括弧で囲んだ部分が一致した値を \1
, \2
, … で利用することができる。
参考:
sed コマンドで、正規表現で一致した値を再利用して置換する | goodbyegangster のブログ
スペースを取り除く
参考:
How to match whitespace in sed? – Super User
空行を取り除く
$ cat file.txt | sed '/^$/d'
参考:
パターン別ファイルの空行削除 (除外) 方法 | 俺的備忘録 〜なんかいろいろ〜
sed を使ってファイルや複数行文字列の末尾の余計な空白行や改行を消す | rcmdnk’s blog
改行に置き換える
BSD sed の場合、エスケープのためのバックスラッシュ \
の後、一旦クォートを閉じて、ANSI-C クォーティングで囲った改行 $'\n'
を入力し、その後にクォーテーションで囲って元の続きを書く。
$ sed -E 's/hoge/\'$'\n''/g'
GNU sed の場合、普通の \n
で良い。
$ sed -E 's/hoge/\n/g'
参考:
Mac の sed で改行コードを出力させる 改行コードの違い再確認 – Qiita
mac の sed (bsd) で 改行を置換する | それマグで!
改行を置換する
参考:
改行 (\n) をスペースに置換するコマンド – Qiita
sed で改行を置換・削除する | 俺的備忘録 〜なんかいろいろ〜
sed を使ってファイルや複数行文字列の末尾の余計な空白行や改行を消す | rcmdnk’s blog
sed でファイルの最終行が空行だった場合のみ、その行を削除する | 俺的備忘録 〜なんかいろいろ〜
sed コマンドで改行を部分的に置換したい | teratail
キャリッジリターンを取り除く
参考:
Remove carriage return in Unix – Stack Overflow
CR を CRLF に置き換える
参考:
How to add a carriage return before every newline? – Unix & Linux Stack Exchange
行頭に文字列を追加する
参考:
sed を使って行の先頭に文字列を追加する | Linux と過ごす
タブを置換する
参考:
BSD (Mac) の sed でのタブ文字を変換する3つの方法 | rcmdnk’s blog
シェル変数を展開して使う際のエスケープ
参考:
sed で変数に代入されている & 等のメタ文字のエスケープ処理を行いたい | teratail
-n オプション / p コマンド
参考:
print only matching group – Stack Overflow
Only return the matched string in sed – Unix & Linux Stack Exchange
最終行のみ処理する
※ BSD sed で処理すると必ず最後に改行が入る。(仕様)
参考:
sed でファイルの最終行が空行だった場合のみ、その行を削除する | 俺的備忘録 〜なんかいろいろ〜
sed でファイルの最初 or 最後の行に挿入 (追記) する | 俺的備忘録 〜なんかいろいろ〜
sed/awk で最終行から n 行にだけ処理を行わせる | 俺的備忘録 〜なんかいろいろ〜
sed でファイルの最後に行を挿入する方法 | ITを使っていこう
sed でファイルの最後の行だけを置換する | akamist blog
sed で最終行が特定の文字列の場合のみ行削除!| mk-mode BLOG
sed で最初と最後の行を表示する | Bye Bye Moore
改行を挿入する形で置換しようとしたとき、最後に余計な改行が入る – スタック・オーバーフロー
パターンスペース/ホールドスペース
参考:
sed のパターンスペース・ホールドスペースの動作を図で学ぶ – Qiita
GNU/BSD/オプションによるメタ文字の違い (BRE/ERE)
BRE (基本正規表現:-E
オプションなし)
\(\)
:グルーピング (エスケープが必要)\{n,m\}
:n 回から m 回の出現を表す (エスケープが必要)
ERE (拡張正規表現:-E
オプションあり)
.
:任意の一文字を表す?
:0回もしくは1回の出現を表す|
:任意のパターンのいずれかを表す
参考:
基本正規表現 (BRE) と拡張正規表現 (ERE) | 気ままなブログ
sed コマンド 正規表現 + の扱い – スタック・オーバーフロー
sed の正規表現で + がイメージと違う動作をします。| teratail
Mac/BSD 版の違い
参考:
Mac 環境で sed を使うときの注意 | tjinjin’s blog
sed コマンド 正規表現 + の扱い – スタック・オーバーフロー
ワンライナー
参考:
ワンライナーでお手軽実行可能な sed 入門 – Qiita
Tips
参考: