【发布时间】:2018-07-12 09:03:56
【问题描述】:
我想从文本文件中删除所有行
- 包含变量$A
- 但如果它也包含变量 $B 则不是
目前我有类似的东西:
sed -e '/${VAR_A_TO_BE_DELETED}/ {/${VAR_B_DONT_DELETE}/! s/$VAR_A_TO_BE_DELETED/STRING_TO_MARK_DELETION/}' $FILE_NAME | grep -v STRING_TO_MARK_DELETION > temp_file; mv temp_file $FILE_NAME
有没有更优雅的方式?这似乎并不总是有效(仍然必须弄清楚“不工作”的参数是什么)。
【问题讨论】:
-
什么时候不工作?当你有两个 $A 实例就行了?您忘记了
s///末尾的g。它几乎和它一样好。您可以使用n;代替!。 -
我很困惑。您是否尝试匹配名为
$VAR_A_TO_BE_DELETED的变量中的文本?如果是这样,您使用了错误的引号,并且 shell 没有插入该变量。如果您正在寻找文字文本${VAR_A_TO_BE_DELETED},那么我不明白为什么s///命令中缺少大括号。请编辑问题以确保准确性。