一个脚本生成几十千行的日志文件,而且大部分行都非常长。如果能通过一些编辑使这个日志更人性化,那就太好了。
在运行时,有一些有用的环境变量。说,${X}
对应
/usr/projects/draco/vendors/spack.tt.developmental/spack.tt.2017-12-06.with-flags/opt/spack/cray-CNL-haswell/intel-17.0.4/gsl-2.4-zagfxq3p5iorh7viw4gc24bwzlx2tyk7
我的目标是使用环境变量来查找类似
Leaving directory /usr/projects/draco/vendors/spack.tt.developmental/spack.tt.2017-12-06.with-flags/opt/spack/cray-CNL-haswell/intel-17.0.4/gsl-2.4-zagfxq3p5iorh7viw4gc24bwzlx2tyk7
并用一个方便的占位符替换它们,在这里gsl-install
Leaving directory gsl-install
我的努力包括这样一个不成功的语法
sed -i -e 's/${X}/gsl-install/g' tedious.log
如何提供sed
环境变量并替换相应的字符串?
$ uname -a
Darwin ***.***.*** 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
你有两个问题
您可以使用任何字符作为
sed
命令分隔符。选择不太可能出现在您的搜索字符串中的内容。sed
并在命令周围使用双引号。例如:
要在 sed 脚本中使用 bash 变量,您需要打破单引号,将变量添加到双引号内,然后返回到 sed 的单引号中。
示例如下: