在TCL脚本中执行sed命令

在TCL脚本中执行sed命令,sed,tcl,Sed,Tcl,我试图在TCL脚本中执行sed命令。基本上,我想在使用TCL读取文件之前删除输入文件中的所有空行。所以我试着在我的脚本中跟随 exec sed -i '/^\s*$/d' .tmp.PG_Ring set fid [open ".tmp.PG_Ring" r] 但脚本正在转储以下错误 sed: -e expression #1, char 1: unknown command: `'' while executing "exec sed -i '/^\s*$/d' .tmp.PG_Ring

我试图在TCL脚本中执行sed命令。基本上,我想在使用TCL读取文件之前删除输入文件中的所有空行。所以我试着在我的脚本中跟随

 exec sed -i '/^\s*$/d' .tmp.PG_Ring
 set fid [open ".tmp.PG_Ring" r]
但脚本正在转储以下错误

sed: -e expression #1, char 1: unknown command: `''
while executing
"exec sed -i '/^\s*$/d' .tmp.PG_Ring"
(file "pg_ring.tcl" line 1)

您能为我提供解决方案并帮助我找到最好的方法吗?

这行不通,因为单引号对Tcl没有任何特殊意义。Tcl使用大括号来表示相同的内容(除了它们嵌套得很好),因此您可以使用以下内容:

exec sed -i {/^\s*$/d} .tmp.PG_Ring

这是行不通的,因为单引号对Tcl毫无特殊意义。Tcl使用大括号来表示相同的内容(除了它们嵌套得很好),因此您可以使用以下内容:

exec sed -i {/^\s*$/d} .tmp.PG_Ring

你能试一下sed-i's/\s*/'吗?我能在shell上成功执行sed-i'/^\s*$/d'.tmp.PG_环命令,但它在TCL脚本内不起作用吗?你能试一下sed-i's/\s*/'吗?我能在shell上成功执行sed-i'/^\s*$/d'.tmp.PG环命令,但它在TCL脚本内不起作用