sedのデバッガ「sedsed」を使ってみる
概要
sed のデバッガとして sedsed というものが存在する模様.
使ってみたので書き出しておく.
・ja.stackoverflow.com -- sedの処理を追えるようデバッグプリントを出したい
sed 4.6 からは「--debug」というオプションがある模様 https://unix.stackexchange.com/questions/492871/any-way-to-have-a-verbose-mode-or-debug-mode-with-sed
手順
1. pip でインストールする
$ pip install sedsed
2. sed スクリプトを書く
コードの内容は頻出の「連続する空行を 1行に束ねる」というものである.
ここでの要点は以下である.
・「sed」を「sedsed」に置き換える.
・「--debug」オプションを付ける.
・AnsiColor コードは煩いので「--nocolor」として無効にする.
・コード内の「EOL」〜「EOL」が sed に与えるデータである.
a.sh
#!/bin/bash
sedsed --debug --nocolor '
/^$/{
N
/^\n$/D
}
' <<EOL
aaaa
bbbb
cccc
EOL
通常 sed (sedsed不使用) 時の a.sh の実行結果
次のように連続する空行 3行が、1行にまとめられている.
aaaa
bbbb
cccc
3. デバッグ実行する
デバッグログが出る.
読み辛いと思うが、一応デバッグログの見方を後述した.
$ ./a.sh
PATT:aaaa$
HOLD:$
COMM:/^$/ {
PATT:aaaa$
HOLD:$
aaaa
PATT:bbbb$
HOLD:$
COMM:/^$/ {
PATT:bbbb$
HOLD:$
bbbb
PATT:$
HOLD:$
COMM:/^$/ {
COMM:N
PATT:\n$
HOLD:$
COMM:/^\n$/ D
PATT:$
HOLD:$
COMM:/^$/ {
COMM:N
PATT:\n$
HOLD:$
COMM:/^\n$/ D
PATT:$
HOLD:$
COMM:/^$/ {
COMM:N
PATT:\ncccc$
HOLD:$
COMM:/^\n$/ D
PATT:\ncccc$
HOLD:$
COMM:}
PATT:\ncccc$
HOLD:$
cccc
4. デバッグログの見方
sed を使う際は、紙に パターンスペースと ホールドスペース を書き出していたので助かる.
aureliojargas さん に感謝.
以上.
Author And Source
この問題について(sedのデバッガ「sedsed」を使ってみる), 我々は、より多くの情報をここで見つけました https://qiita.com/robozushi10/items/ee449cf9c36c74d253c2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .