お知らせ
現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。
置換をするためのコマンドだが、PCREは基本使えない(自前でビルドすれば使える)
大抵のケースでPerlを使った方が楽だが、Busybox系のディストリなどで入っていない環境では重宝する。
-l
入力からケツ改行を消す-p
入力行を処理する-e
スクリプトを流せるphp -r
のようなもの-i[ext]
ファイル置換。extに指定があるとバックアップファイルが生える
sed -i.bak -e 's/aaa/bbb/' path/to/file
コマンドを使う必要がある
入力
cat <<'EOF' | sed ':a;N;$!ba;s/\n/\\n/g'
aaa
bbb
ccc
ddd
EOF
出力
aaa\nbbb\nccc\nddd
コマンドの意味合い
コマンド | 意味合い |
---|---|
; |
恐らくコマンドの終わり |
: |
ラベル。今回の:a はラベルa |
N |
入力の次の行をパターンスペースに読み込む |
$ |
最終行にマッチ |
! |
マッチしない(アドレスとコマンドの間に入れる必要がある) |
b |
ラベルに分岐する。ba はラベルaに分岐。gotoみたいなもんだと思う |
つまり入力の次の行をパターンスペースに読み込み、最終行にマッチしなければ入力の次の行をパターンスペースに読み込み、マッチすればs/\n/\\n/g
が発動するのだと思われる。