[英]cannot match multiple occurrences of character in sed regexp
我正在嘗試在行尾刪除As。
alice$ cat pokusni
SALALAA
alice$ sed -n 's/\(.*\)A$/\1/p' pokusni
SALALA
一個A被刪除就好了
alice$ sed -n 's/\(.*\)A+$/\1/p' pokusni
alice$ sed -n 's/\(.*\)AA*$/\1/p' pokusni
SALALA
多次出現不是:(
我可能只是在犯一些非常愚蠢的錯誤,對您有幫助嗎? 謝謝。
試試這個's/\\(.*[^A]\\)AA*$/\\1/p'
為什么+
不起作用:
因為這里只是正常字符。
為什么's/\\(.*\\)AA*$/\\1/p'
不起作用:
由於REG-EX引擎是渴望,所以.*
將消耗多達A
小號除了最后一個在指定AA*
。 而且A*
不會匹配任何內容。
這可能對您有用:
sed -n 's/AA*$//p' file
這將替換行末的A
以及零個或多個A
NB
sed -n 's/A*$//p file'
會產生正確的字符串,但是會在每一行上運行,因此會產生誤報。
使用awk
awk '{sub(/AA$/,"A")}1' pokusni
SALALA
編輯正確的版本,從行尾刪除所有A
awk '{sub(/A*$/,x)}1' pokusni
您可以使用perl:
> echo "SALALAA" | perl -lne 'if(/(.*?)[A]+$/){print $1}else{print}'
SALAL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.