使用cshell中的sed进行变量声明

时间:2016-11-12 17:42:17

标签: shell variables sed cut csh

我试图用grep解析一个点阵,并将输出保存在一个cshell脚本的变量中。但不知何故,我总是收到错误消息"非法变量名称"添加FILE_IN_B变量时。我在变量名称之后尝试了不同的间距,并尝试$()%.*,而不是sed删除最后四个字母但在cshell中都不起作用。还尝试在""中设置声明,但无济于事。我真的绝望了......

#!/bin/csh
set FILE_IN = file.ext
set SOURCE = home/Developer
set FILE_IN_B=`sed '/.\{4\}$//' >>> "$FILE_IN"`.lat
set REC = `grep -C 1 'I=11' "$SOURCE/Lattice/$FILE_IN_B" | cut -d ' ' -f 3 | cut -d= -f 2| sed 's/sp//'`

1 个答案:

答案 0 :(得分:1)

csh有一些内置的变量操作,包括一个用于删除扩展名的操作:

% set FILE_IN=file.ext
% set FILE_IN_B="${FILE_IN:r}.lat"
% echo "$FILE_IN_B"
file.lat

如果需要sed,那么printf可用作标准输入,类似于便携式sh

% set FILE_IN=file.ext
% set FILE_IN_B=`printf %s "$FILE_IN" | sed 's/.\{4\}$//'`.lat
% echo "$FILE_IN_B"
file.lat