fzf の key-bindings.zsh にて、以下のperlワンライナーを見かけました。
この (/^\s*[0-9]+\**\s+(.*)/, $1)
の部分がよくわからないので解説していただけないでしょうか?
shell
1fc -rl 1 | perl -ne 'print if !$seen{(/^\s*[0-9]+\**\s+(.*)/, $1)}++'
恐らく、コマンドが被った行をフィルタしていると推測します。
後置if で条件にマッチした行だけを print していて、seen というハッシュにコマンド文字列をキーとして登録して、次回同じコマンド文字列が来たときには print しないようにしていると思われます。
/^\s*[0-9]+\**\s+(.*)/
の (.*)
の部分でキャプチャしたい部分を指定しているかと存じます。$1
は正規表現キャプチャの1番目という意味でしょうか?
そして perl のワンライナーの仕様がよくわかっていないのですが、脈略なくいきなり正規表現が登場したら、その正規表現はパイプで標準入力から渡ってきた行に適用されるということでよろしいでしょうか?そして (正規表現, 文字列)
のように正規表現を括弧で括って ,
の後に文字列を置くと、その文字列が最終的な出力値になるということでしょうか?
(ちなみに fc
はzshのヒストリを表示するコマンドです。 4465 echo AAAA
のように、行頭にヒストリ番号、空白の後にはコマンドという行を表示します。)

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。