我有一个包含以下几行的文件:
auth_service_oauth_secret_accfrsh
auth_service_oauth_secret_accfrshv12
auth_service_oauth_secret_accfrshv13
我希望能够仅删除第一行,其中我的模式仅为“accfrsh”,但我尝试使用多个 sed 命令,但它不起作用。所有带有“accfrsh”模式的行都将被删除或没有任何变化。
我尝试了以下 sed 命令(与 -e 或 -i 无关):
sed -e "/accfrsh/d" my_file (remove all lines)
sed -e 's/\<accfrsh\>//g' my_file (nothing changes)
sed -e "/'^'accfrsh'$'/d" my_file (nothing changes)
这可能对你有用(GNU sed):
sed '/_accfrsh\b/d' file
删除包含
_accfrsh
且后跟单词边界的行。
比较:
sed '/_accfrsh\B/d' file
注意
\b
与 /<
和 />
相关,表示单词边界的开始和结束(参见 here)。
您可以使用此命令删除第一行匹配项
sed -i '0,/accfrsh/{//d}' my_file
该命令将从文件的开头(第 0 行)开始,并在第一次出现模式“accfrsh”时结束。 {//d} 将删除该行