Awk csh中的grep与变量赋值

Awk csh中的grep与变量赋值,awk,grep,csh,Awk,Grep,Csh,我试图用从grep和awk获得的值来分配一个变量。像下面这样。有谁能帮我正确的语法吗 下面是我试图获取文件完整路径的代码段: set name='egrep -i "vars\(design\)" foo.tcl' | 'awk '{print $3}'' set dir = $cwd set fulldir = $dir/$name 您需要使用反勾号来展开命令,而不是单引号。此外,看起来您添加了一大堆随机的“s 这应该起作用: set name = `egrep -i "vars\(desi

我试图用从grep和awk获得的值来分配一个变量。像下面这样。有谁能帮我正确的语法吗

下面是我试图获取文件完整路径的代码段:

set name='egrep -i "vars\(design\)" foo.tcl' | 'awk '{print $3}''
set dir = $cwd
set fulldir = $dir/$name

您需要使用反勾号来展开命令,而不是单引号。此外,看起来您添加了一大堆随机的
s

这应该起作用:

set name = `egrep -i "vars\(design\)" foo.tcl | awk '{print $3}'`
也就是说,您实际上不“需要”在这里使用
grep
,您只能使用awk:

set name = `awk '/vars\(design\)/{print $3}' IGNORECASE=1 foo.tcl`
/
之间的部分选择行(就像grep一样)


您还可以考虑将引用添加到其他两个代码> SET命令:

set dir = "$cwd"
set fulldir = "$dir/$name"

这里不太可能出现这种情况,但是如果
$dir
$name
包含空格或其他特殊shell字符,如果没有引号,您将遇到问题。总是添加它们以防止出现问题是个好主意。

试试
name='awk'/vars\(design\)/{print$3}'IGNORECASE=1 foo.tcl`
谢谢Sundeep!这很有效。