该文件包含如下字符串:
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命令有什么问题
答案 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替换的反斜杠。