sed を使用したログファイルの長いパスのクリーンアップ

sed を使用したログファイルの長いパスのクリーンアップ

スクリプトは数十行のログファイルを生成でき、ほとんどの行は非常に長いです。ちょっとした編集でこのブログを人間化できるといいですね。

実行時にはいくつかの便利な環境変数があります。${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

おすすめ記事