2016-07-24 49 views
-1

只是想知道是否有一種方便的方法來修改Perl中的匹配模式變量。比如字符串abcdef在我想使用看起來像這樣一個命令e(ABCE輸出)來代替def如何修改匹配的模式

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

爲什麼你問sed是否你的整個問題描述是關於Perl的? – melpomene

回答

1

這是很容易在Perl與/e標誌:

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

e告訴Perl解析更換部件爲代碼的塊,而不是字符串。你可以把任意代碼放在那裏。

但你的具體任務(修剪第一和最後一個字符)也可以這樣做:

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

(。此外,perl -p已經意味着-n無需同時指定)