#@や#@@などで表されるテキストブロックから一部の情報を抽出しようとしています。サンプルファイルで以下のコマンドを使用すると機能しますが、-eで接続しようとすると期待どおりに機能しません。
現在のコマンド(理想的ではない)
sed -n "/^#@/,/#@@/p" file | sed 's/[#@]*//'
再設計されたコマンド(動作しない)
sed -en "/^#@/,/#@@/p" -e 's/[#@]*//' file
希望の出力
text title
text line
text line
ファイル形式
#
#
#@ text title
# text line
# text line
#@@
#
私は何が間違っていましたか?
答え1
注文する
sed -en "/^#@/,/#@@/p" -e 's/[#@]*//' file
ファイル-en
に式を適用しようとするとエラーが発生する可能性があります。他のオプションと組み合わせるには、次のように式パラメータをlikeの後に置くか、完全に分離する必要があります。n
/^#@/,/#@@/p
-e
-e
-ne "/^#@/,/#@@/p"
-n -e "/^#@/,/#@@/p"
ところで、代替コマンドを適用したいようです。指定された行でそしてそれから実際には、式であるものを印刷してください。
$ sed -n '/^#@/,/#@@/s/^#@*//p' file
text title
text line
text line
先行スペースを削除するには:
$ sed -n '/^#@/,/#@@/s/^#[@ ]*//p' file
text title
text line
text line