我的文本文件包含如下内容,我想删除特定位置的行。
例如从-displayName: "TIBCO_EMS_2"
到excludeTopics: []
我试过以下。
DP=TIBCO_EMS_2
sed "/- displayName: $DP/,/excludeTopics/d" config.yml
但仍然没有运气,是否有正确的命令可以使用而不是sed。
emsServers:
- displayName: "TIBCO_EMS_1"
host: "8988.auf.net"
port: 7443
protocol: "tcp"
user: "admin"
password: ""
encryptedPassword: "xzID9SbHsQTMkoRSVTGu4g=="
encryptionKey: "EncryptionKey"
showTemp: false
showSystem: false
excludeQueues: [sample1 sample2]
excludeTopics: []
- displayName: "TIBCO_EMS_2"
host: "8988.auf.net"
port: 7333
protocol: "tcp"
user: "admin"
password: ""
encryptedPassword: "d4FqX7O6bZCDs2corcd2eA=="
encryptionKey: "EncryptionKey"
showTemp: false
showSystem: false
excludeQueues: [sample1 sample2]
excludeTopics: []
答案 0 :(得分:1)
您可以试试awk
:
awk -vRS= '!/displayName: "TIBCO_EMS_2"/{print}' filename
不改变原始格式,
awk -vRS= '!/displayName: "TIBCO_EMS_2"/{print}' ORS="\n\n" filename
如果要在变量中传递值,
DP='"TIBCO_EMS_2"'
awk -vVAR="$DP" -vRS= '{patt="displayName: "VAR} $0 !~ patt{print}' ORS="\n\n"
答案 1 :(得分:0)
你错过了引号。
DP=TIBCO_EMS_2 sed "/- displayName: \"$DP\"/,/excludeTopics/d" config.yml