删除包含多个特定字符串的行

时间:2011-04-07 17:36:19

标签: bash shell sed

我使用'/'"$name"'/d'删除包含用户输入名称变量的行。但我想一起删除包含$name$surname的行。如何修改此'/'"$name"'/d'代码?

4 个答案:

答案 0 :(得分:1)

可以像这样使用sed:

cat input | sed '/\('"$name"'.*'"$surname"'\)\|\('"$surname"'.*'"$name"'\)/d'

答案 1 :(得分:0)

最简单的是

cat input | egrep -v "$name.*$surname" | egrep -v "$surname.*$name" > output

答案 2 :(得分:0)

awk '/name/ && /surname/ {next} 1' filename

或者,将值从shell传递给awk

awk -v first=$name -v last=$surname '$0 ~ first && $0 ~ last {next} 1' filename

答案 3 :(得分:0)

红宝石(1.9 +)

$ ruby -ne 'next if /'"$name"'/ && /'"$surname"'/;print' file