файл содержит строки, как следующее:TCL: Grep, регулярное выражение, чтобы удалить строку шаблона из файла
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 с ommand
Вспомните, что синтаксис подстановки команды Tcl - '[command]' с квадратными скобками. Поскольку конвейер grep находится в строке с двойными кавычками, Tcl попытается выполнить подстановку команд и переменных в строке. Вам нужно будет скрыться от '[' - см. Http://www.tcl.tk/man/tcl8.6/TclCmd/Tcl.htm –
. У вас также есть те же проблемы, что и с другим вопросом. Любая обратная косая черта, которую вы хотите передать оболочке, должна быть удвоена. Анкер '' ', переданный grep, должен быть защищен как от tcl, так и от оболочки. –