2016-07-24 14 views
-1

Perlの1つのライナーで一致するパターン変数を変更する便利な方法があるかどうかは疑問です。文字列abcdefで例えば私はこのように見ているコマンドを使用して(出力ABCE)edefを交換したいと思います:一致するパターンを修正する方法

echo "abcdef" | perl -pne 's/(def)/{command that trims first and last character of $1 and returns it as a string for perl to use it as a replacement}/' 

様々な整形タスクを実行するために、このような機能を使いやすいだろう。私たちはsedでこれを行うことができますか?

+1

されているのはなぜ問題の説明全体がPerlに関するものであれば、sedについて質問しますか? – melpomene

答えて

1

これは/eフラグをPerlで簡単である:

echo 'abcdef' | perl -pe 's/(def)/substr $1, 1, -1/e' 

eは、コードのブロックではなく、文字列として交換部品を解析するPerlを伝えます。あなたはそこに任意のコードを入れることができます。

しかし、(最初と最後の文字をトリミング)あなたの具体的なタスクは次のようにもして行うことができます。(。。また、perl -pはすでに-nがないことを意味し、両方を指定する必要はありません)を

echo 'abcdef' | perl -pe 's/d(e)f/$1/' 

関連する問題