【问题标题】:Variable declaration with sed in cshell在 shell 中使用 sed 声明变量
【发布时间】:2017-03-26 17:37:56
【问题描述】:

我正在尝试使用 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//'`

【问题讨论】:

  • AFAIK,C shell 中没有>>> 运算符
  • 嗯,我对set FILE_IN_B = $FILE_IN | sed '/.\{4\}$//' 进行了同样的尝试,但这也没有用。还有其他方法吗?

标签: shell variables sed cut csh


【解决方案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

【讨论】:

  • 这正是我所需要的!非常感谢。
猜你喜欢
  • 2013-04-02
  • 2016-10-06
  • 2011-02-26
  • 2011-07-28
  • 2010-10-20
  • 2020-08-07
  • 2015-01-04
相关资源
最近更新 更多