
zsh
私は文字列を持つ関数を書いています
"find . -a -print:10"
:10
右側の部分をトリミングする必要があります。これは将来的に または などに変わる可能性があるので:23
、:77
のようなパターン:[0-9]+
が必要になるようです。
また、文字列は次の形式になるかもしれません
find . -a -print
:[0-9]+
その場合、末尾にパターンがなければ、文字列は変更されません。
それで
find . -a -print:10
なるはずでありfind . -a -print
、find . -a -print
そのままにしておくべきfind . -a -print
これまで試したこと
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
もし私が試したら
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
しかし、同じsed
表現
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
この文字列を正しくトリミングするにはどうすればよいでしょうか?
答え1
-n
デフォルトの出力を抑制したくない場合は、なぜ を使用するのですか?
次のように使用します:
sed -E -e 's/:[0-9]+$//'