Sep*_*p A 3 sed regular-expression
给出仅包含一些由行分隔的用户名的文本文件示例:
@Alice
@Bob
Cindy
Leon
@Mark
Run Code Online (Sandbox Code Playgroud)
如何添加@到尚未包含该行的每一行的开头?
sed脚本中的语句有一个[address[,address]][!] action模式,其中address可以是行号或/regexp/,地址可以用!(not) 反转,所以在这里你可以写:
sed '/^@/! s/^/@/' < file
Run Code Online (Sandbox Code Playgroud)
将 a 添加@到还没有的行的开头。
地址是/^@/(@行开头 ( ^) 之后的行),!将其反转,以便s/^/@/操作(s用 代替行开头@)仅在不匹配的行上运行。
您可以通过以下方式达到相同的效果:
sed 's/^@\{0,1\}/@/' < file
Run Code Online (Sandbox Code Playgroud)
@它将开头的0 或 1 替换为@. 与 ERE 相同:
sed -E 's/^@?/@/' < file
Run Code Online (Sandbox Code Playgroud)