web-dev-qa-db-ja.com

sedで「詳細モード」または「デバッグモード」を使用する方法はありますか?

何を実行し、何を実行するかについてgnu sedを冗長にする方法はありますか?
「デバッグモード」のようなものを用意して、入力の各行について、スクリプトの実行前と実行後のホールドスペースとパターンスペースの内容などを確認したいと思います。

10
don_crissti

fra-san言及 、GNU sed--debug バージョン4.6で、あなたが探していることをほとんど行うオプション。だから例えばあなたが走るなら:

printf '%s\n' one two  | sed --debug 'H;1h;$x;$s/\n/_/g'

出力は

SED PROGRAM:
  H
  1 h
  $ x
  $ s/\n/_/g
INPUT:   'STDIN' line 1
PATTERN: one
COMMAND: H
HOLD:    \none
COMMAND: 1 h
HOLD:    one
COMMAND: $ x
COMMAND: $ s/\n/_/g
END-OF-CYCLE:
one
INPUT:   'STDIN' line 2
PATTERN: two
COMMAND: H
HOLD:    one\ntwo
COMMAND: 1 h
COMMAND: $ x
PATTERN: one\ntwo
HOLD:    two
COMMAND: $ s/\n/_/g
MATCHED REGEX REGISTERS
  regex[0] = 3-4 '
'
PATTERN: one_two
END-OF-CYCLE:
one_two

使用しているディストリビューションはわかりませんが、このバージョンのsed(またはそれ以降)は Debian 10の場合buntu 19.04の場合 、およびその派生物です。 Fedoraまたは関連するディストリビューションではまだ利用できません。

7
Stephen Kitt