參考:https://stackoverflow.com/questions/26110266/does-lookbehind-work-in-sed
問題:
將如下中的|!|! 替換為 |!@|!
19cdef1cf7ea02fa627281853ea2e1b2d27303e028906bffd755f0f56|!unknown|!Clean|!|!|!|!api_apit
而使用正向搜索後無效果,如下:
# cat l|sed 's/|!(?=|!)/|!@/g'
e39999219cdef1cf7ea02fa627281853ea2e1b2d27303e028906bffd755f0f56|!unknown|!Clean|!|!|!|!api_apit
查詢原因為:
GNU sed does not have support for lookaround assertions. You could use a more powerful language such as Perl or possibly experiment with ssed which supports Perl-style regular expressions.
perl -pe 's/(?<=foo)bar/test/g' file.txt
修改為perl後,可以如下:# cat l|perl -pe 's/\|!(?=\|!)/\|!@/g' e39999219cdef1cf7ea02fa627281853ea2e1b2d27303e028906bffd755f0f56|!unknown|!Clean|!@|!@|!@|!api_apit
没有评论:
发表评论