关于shell的sed正则表达式用法问题请大神详细讲解这句命令的意思,感激不尽.ah:# echo 'aaaaaaactttt'|sed 's/\(.*\)a/\1b/'aaaaaabctttt

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 17:59:46
关于shell的sed正则表达式用法问题请大神详细讲解这句命令的意思,感激不尽.ah:# echo 'aaaaaaactttt'|sed 's/\(.*\)a/\1b/'aaaaaabctttt

关于shell的sed正则表达式用法问题请大神详细讲解这句命令的意思,感激不尽.ah:# echo 'aaaaaaactttt'|sed 's/\(.*\)a/\1b/'aaaaaabctttt
关于shell的sed正则表达式用法问题
请大神详细讲解这句命令的意思,感激不尽.
ah:# echo 'aaaaaaactttt'|sed 's/\(.*\)a/\1b/'
aaaaaabctttt

关于shell的sed正则表达式用法问题请大神详细讲解这句命令的意思,感激不尽.ah:# echo 'aaaaaaactttt'|sed 's/\(.*\)a/\1b/'aaaaaabctttt
正则匹配中,点号.表示任意一个字符,*表示重复前面一个字符(这里就是点号.)0次或多次.
\(.*\)a表示要以一个a字符结尾,而默认情况下*具有贪婪特性,会匹配符合要求的最大数目的字符.
因此 .* 就匹配到了最后一个a前面的所有字符.

\( \) 这种结构在sed的替换命令里是组的概念,在后面替换时可以用\n来引用.
第一个组用\1,第二个组用\2,依此类推.
这个命令的作用就是:将字符串中最后一个a字符替换为b,其余不变.