sed:簡単な置換
更新日:
投稿日:
投稿日:
置換をするためのコマンドだが、PCREは基本使えない(自前でビルドすれば使える)
大抵のケースでPerlを使った方が楽だが、Busybox系のディストリなどで入っていない環境では重宝する。
オプション
-l入力からケツ改行を消す
CLI入力するとケツに改行が入るのでそれを除去できる-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が発動するのだと思われる。