tcl:grep,regexp从文件中删除字符串模式

时间:2015-12-29 19:20:52

标签: regex grep tcl

该文件包含如下字符串:

str1.str2.
str1.str2.str3.
str1.str2.str3.1.
str1.str2.str3.1.p
如果$str = "str1.str2."然后删除除str1.str2.str3.之外的所有字符串,则逐行解析文件时

因为我用这个:

exec sh -c "grep $str file |grep -v $str[A-Za-z_0-9]\+\.[A-Za-z_0-9] |grep -v ^$str.$ > dest_file"

但这一个我不起作用“无效命令[A-Za-z_0-9] !!

这个tcl命令有什么问题

1 个答案:

答案 0 :(得分:1)

如果我理解得很清楚,请在输入中输入这样的文件:

$ cat file
blah
str1.str2.
str1.str2.str3.
str1.str2.str3.1.
str1.str2.str3.1.p
blah

您希望在输出中包含str1.str2.str3.的单行。如果是这种情况,您可以用一个命令替换多个管道的grep命令:

$ grep -E ${str}[^.]+.\$ file
str1.str2.str3.

如上文评论中所述,您必须"保护"通过加倍来替换tcl替换的反斜杠。