onl*_*rra 9 sed regular-expression
我已阅读并搜索,但我不明白它有什么问题,我想匹配:一个空格,字符串 00011,以及一个空格或一个新行。
sed 's:\(\s\)\(00011\)\([\s\n]\):\1$03\3:g'
Run Code Online (Sandbox Code Playgroud)
编辑:数据如下所示:
ADD 00000 00001 00011
LSH 00011 00100 01111
ADD 00011 10100 00010
JSR 00011101000111010101100010
Run Code Online (Sandbox Code Playgroud)
并且$03只是一个字符串来替换00011
我想以这样的方式结束:
ADD 00000 00001 $03
LSH $03 00100 01111
ADD $03 10100 00010
JSR 00011101000111010101100010
Run Code Online (Sandbox Code Playgroud)
谢谢
sed 一次在一行上工作,它会在处理每一行时去除换行符。
因此,为了执行您想要的操作,您应该匹配行尾锚点 ( $) 而不是文字换行符。
这应该有效:
sed 's:\(\s\)\(00011\)\(\s\|$\):\1$03\3:g'
Run Code Online (Sandbox Code Playgroud)
$ sed 's/\<00011\>/$03/g' file
ADD 00000 00001 $03
LSH $03 00100 01111
ADD $03 10100 00010
JSR 00011101000111010101100010
Run Code Online (Sandbox Code Playgroud)
的\<和\>在一个单词的开始和结束的零宽度字边界匹配分别,。BSDsed也会识别[[:<:]]和[[:>:]],而 GNUsed也将其理解\b为单词边界。
sed永远不会看到输入数据中的换行符。此外,\s特定于 GNU sed。要匹配标准中的空格字符,sed只需使用文字空格(要匹配空格或制表符,请使用[[:blank:]])。
| 归档时间: |
|
| 查看次数: |
5791 次 |
| 最近记录: |