sed替换(错误地)在第一场比赛时停止

时间:2017-02-09 23:35:57

标签: sed

echo '/foo/bar/test/' | sed -e "s/\//|/"

预期:|foo|bar|test| 实际:|foo/bar/test/

有什么问题?

1 个答案:

答案 0 :(得分:0)

正如Jose Ricardo Bustos M.和Patrick Trentin的评论所指出的那样,<?php $a = [ 'name' => 'a', 'content' => 'b', 'author_fullName' => 'c', 'author_email' => 'd', 'author_role_name' => 'e' ]; $finalArray =[]; array_walk($a, function(&$value, $key) use(&$finalArray) { $indexes = explode('_',$key); foreach ($indexes as $index){ $finalArray = &$finalArray[$index]; } $finalArray = $value; }); print_r($finalArray); 工作正常。 sed命令仅替换第一个匹配,除非使用标志更改了行为。要替换所有匹配,请使用s///。要替换s///g匹配,例如第三个匹配,而不是第一个,使用n