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