删除包含 $ 的行,末尾带有一个 $ 的行除外

删除包含 $ 的行,末尾带有一个 $ 的行除外

我想删除任何包含$后跟字符的行,例如:

a$df
aheh$b$
t$$a

我希望保留包含 $,在行尾:

abc$
abcdwh$

该文本文件包含 2M 行。

答案1

$中的元字符通过sed两种方式进行字面匹配:

  • 要么我们反斜杠它\$要么
  • 将其括在方括号中[$]

但还有另一种方法,如果$不是正则表达式中的最后一个字符,则将其视为文字。所以下面的

sed -e '/$./d' file

是为您的问题量身定做的。

答案2

$如果某行后面包含任何内容 ( .),则删除该行:

sed '/\$./d' file

此模式也适用于grep

grep -v '\$.' file

相关内容