如何使用“egrep -v”删除“X-TMASE-MatchedRID”键/值?

时间:2016-10-27 07:05:51

标签: linux grep

我的文件包含如下内容:

X-TM-AS-Product-Ver: IMSVA-8.2.0.1391-8.0.0.1202-22662.005
X-TM-AS-Result: No--0.364-7.0-31-10
X-imss-scan-details: No--0.364-7.0-31-10
X-TMASE-Version: IMSVA-8.2.0.1391-8.0.1202-22662.005
X-TMASE-Result: 10--0.363600-5.000000
X-TMASE-MatchedRID: 40jyuBT4FtykMGOaBzW2QbxygpRxo469FspPdEyOR1qJNv6smPBGj5g3
        9Rgsjteo4vM1YF6AJbZcLc3sLtjOty5V0GTrwsKpl6V6bOpOzUAdzA5USlz33EYWGTXfmDJJ3Qf
    wsVk0UbuGrPnef/I+eo9h73qb6JgVCR2fClyPE+EPh2lMKov3fdtvzshqXylpWZGeMhmJ7ScqBW
    z6M5VHW/fngY5M/1HkzhvqqZL61o+ZdBoyruxjzQ==

This is my real text! I need to extract this line!

现有代码由其他人在过去编写,执行以下行:

cat $my_file | egrep -v "^(X-TM-AS)" 
             | egrep -v "X-imss-scan-details"

据说要删除以“X-”开头的所有键值行。

上面的代码一直工作到今天为止,因为以X-TMASE开头的密钥从来都不是过去的密钥。它已经开始出现在今天的文件中,因此它导致代码在提取有用数据时失败。

在新添加的密钥中,在我看来X-TMASE-MatchedRID是让我们头疼的问题,因为它有一个跨越多行的值:

X-TMASE-MatchedRID: 40jyuBT4FtykMGOaBzW2QbxygpRxo469FspPdEyOR1qJNv6smPBGj5g3
        9Rgsjteo4vM1YF6AJbZcLc3sLtjOty5V0GTrwsKpl6V6bOpOzUAdzA5USlz33EYWGTXfmDJJ3Qf
    wsVk0UbuGrPnef/I+eo9h73qb6JgVCR2fClyPE+EPh2lMKov3fdtvzshqXylpWZGeMhmJ7ScqBW
    z6M5VHW/fngY5M/1HkzhvqqZL61o+ZdBoyruxjzQ==

最初我尝试了以下内容:

cat $my_file | egrep -v "^(X-TM-AS)" 
             | egrep -v "X-imss-scan-details"
             | egrep -v "^(X-TMASE-)"

但它没有用。它没有完全消除X-TMASE-MatchedRID的价值:

9Rgsjteo4vM1YF6AJbZcLc3sLtjOty5V0GTrwsKpl6V6bOpOzUAdzA5USlz33EYWGTXfmDJJ3Qf
    wsVk0UbuGrPnef/I+eo9h73qb6JgVCR2fClyPE+EPh2lMKov3fdtvzshqXylpWZGeMhmJ7ScqBW
    z6M5VHW/fngY5M/1HkzhvqqZL61o+ZdBoyruxjzQ==

This is my real text! I need to extract this line!

我希望输出为:

This is my real text! I need to extract this line!

也就是说,我不希望在输出中看到任何元数据。

任何想法如何使用egrep或任何等效的命令来实现?

1 个答案:

答案 0 :(得分:2)

如果您只想删除第一段,则其他命令更好,例如sed

sed '1,/^$/ d' "$my_file"