以下命令在 Solaris 上工作正常(仅当最后一个字符为 ":" 时才删除行)
sed -e '/:$/d' < foo > foo.new
Run Code Online (Sandbox Code Playgroud)
如何在 perl 中做同样的事情?(原因是因为我不想创建一个新文件)
perl -i -pe 's/:$/d' foo
Substitution replacement not terminated at -e line 1.
Run Code Online (Sandbox Code Playgroud)
类似于:
perl -ne '打印除非 /:$/'
perl -ne '打印如果 !/:$/'
perl -ne '!/:$/ && 打印'
注意,这两个sed -i并perl -i通过创建一个临时文件,并替换原来的工作。如果您也想避免这种情况,请使用ed:
ed 文件 <<'EOF' 克/:$/天 wq EOF