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]+$//'