如何使用 sed 按照模式从文件中删除行

问题描述 投票:0回答:2

我有一个包含以下几行的文件:

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)
sed
2个回答
2
投票

这可能对你有用(GNU sed):

sed '/_accfrsh\b/d' file

删除包含

_accfrsh
且后跟单词边界的行。

比较:

sed '/_accfrsh\B/d' file

注意

\b
/<
/>
相关,表示单词边界的开始和结束(参见 here)。


0
投票

您可以使用此命令删除第一行匹配项

sed -i '0,/accfrsh/{//d}' my_file

该命令将从文件的开头(第 0 行)开始,并在第一次出现模式“accfrsh”时结束。 {//d} 将删除该行

© www.soinside.com 2019 - 2024. All rights reserved.