スクリプトは数十行のログファイルを生成でき、ほとんどの行は非常に長いです。ちょっとした編集でこのブログを人間化できるといいですね。
実行時にはいくつかの便利な環境変数があります。${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
ベストアンサー1
2つの質問があります
- 環境変数に「/」文字が含まれています。
- sed パラメーターを一重引用符で囲むので、${X} は置換なしで渡されます。
sed
すべての文字をコマンド区切り文字として使用できます。検索文字列に表示される可能性の低いコンテンツを選択してください。コマンドの周囲に二重引用符を使用してください。sed
たとえば、次のようになります。
sed -i -e "s;${X};gsl-install;g" tedious.log