html tool

2023年10月12日星期四

轉:GNU sed extensions are not lookaround assertions

 參考: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


没有评论:

发表评论