使用unix sed删除包含以美元符号开头的特定字符串的行

时间:2016-04-01 06:48:50

标签: unix sed

我是Unix新手。

我有一个包含以下行的参数文件ProcessResultSetFromDatabase

Parameter.prm

我希望输出为

$$ErrorTable1=ErrorTable1
$$Filename1_New=FileNew.txt
$$Filename1_Old=FileOld.txt
$$ErrorTable2=ErrorTable2
$$Filename2_New=FileNew.txt
$$Filename2_Old=FileOld.txt
$$ErrorTable3=ErrorTable3
$$Filename3_New=FileNew.txt
$$Filename3_Old=FileOld.txt

基本上,我需要删除以$$ErrorTable1=ErrorTable1 $$ErrorTable2=ErrorTable2 $$ErrorTable3=ErrorTable3 开头的行。

由于$$Filename是一个关键字,我无法将其解释为字符串。我如何使用sed实现这一目标?

2 个答案:

答案 0 :(得分:0)

基于模式搜索从文本文件中提取信息是grep

的工作
grep ErrorTable file

甚至

grep -F '$$ErrorTable' file

-F告诉grep将搜索词视为固定字符串而不是正则表达式。

回答你的问题,如果正则表达式需要搜索正则表达式语言中具有特殊含义的字符,你需要将它们转义:

grep '\$\$ErrorTable' file

答案 1 :(得分:0)

使用sed:

$ sed '/$$Filename/d' infile
$$ErrorTable1=ErrorTable1
$$ErrorTable2=ErrorTable2
$$ErrorTable3=ErrorTable3

/$$Filename/部分是地址,即对于与之匹配的所有行,将执行其后的命令。命令为d,删除该行。不匹配的行只是按原样打印。