我是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实现这一目标?
答案 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
,删除该行。不匹配的行只是按原样打印。