【问题标题】:Replace string path in log file with current folder name将日志文件中的字符串路径替换为当前文件夹名称
【发布时间】:2019-12-21 10:19:07
【问题描述】:

我是新来的,已经尝试找到以下要求的解决方案,但没有成功。我正在努力实现这一目标:

我有这 5 个文件夹:

ServiceEngine
PaymentEngine
InvoiceEngine
ProcessEngine
OrderProcessEngine

在每个文件夹中,我都有一个带有默认路径位置的日志文件来存储日志文件,例如ServiceEngine/logs

日志文件包含以下路径结构:

name="RollingRandomAccessFile" fileName="logs/engine.log" 
filePattern="logs/engine-%i.log" 

我希望找到一种方法来检索我所在的当前文件夹的名称并将字符串引擎替换为文件夹名称

示例:我在 ServiceEngine 文件夹中并执行检索当前文件夹名称的命令。预期结果是:

name="RollingRandomAccessFile" fileName="logs/ServiceEngine.log" 
filePattern="logs/ServiceEngine-%i.log

稍后我将目录更改为 PaymentEngine,预期的结果是:

name="RollingRandomAccessFile" fileName="logs/PaymentEngine.log" 
filePattern="logs/PaymentEngine-%i.log

等等。也许有一种更聪明的方法来创建一个脚本,像这样在循环中更新字符串; if ... fi; done 或使用 for in ... 循环。

【问题讨论】:

  • "logs/PaymentEngine-%i.log 看起来像 DOS 批处理语法。日志文件是什么类型的文件?
  • 不是您问题的答案,但我建议您分析您的日志,使用Splunk。每天最多可免费使用 500MB 日志。它会自动处理文件和格式。
  • @RegExp12 你还需要什么吗?如果不是,请选择其中一个答案。

标签: shell awk sed xargs


【解决方案1】:

你的意思是这样的吗?

~/ServiceEngine$ cat logfile
name="RollingRandomAccessFile" fileName="logs/engine.log"
filePattern="logs/engine-%i.log"

~/ServiceEngine$ awk -v path=$(basename $(pwd)) 'gsub("engine", path)' logfile
name="RollingRandomAccessFile" fileName="logs/ServiceEngine.log"
filePattern="logs/ServiceEngine-%i.log"

请参阅basenamedeclaring variables in awkawk gsub

【讨论】:

  • 是的,这正是我所需要的。我试过这个命令,但它只打印出结果而不将其保存在文件中
  • @RegExp12 当您调用 awk 时,您可能有 gawk。从 4.1.0 版开始,您只需调用 awk -i inplace(与 awk --version 核对)。对旧版本使用临时文件,所以 awk ... > logfile_new ; mv logfile_new logfile.
【解决方案2】:

我想我不明白你的问题,但是:

dir=$( basename $( pwd ) )
echo name="RollingRandomAccessFile" \
     fileName="logs/$dir.log" \
     filePattern="logs/$dir-%i.log"

这就是你要找的吗?

【讨论】:

    【解决方案3】:

    听起来你正在寻找这样的东西:

    $ sed 's/\bengine\b/'$(basename $(pwd))'/' logs
    

    从您的一个文件夹中运行时,它会吐出您要求的文本。但不清楚您想用该文本做什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2019-08-23
      • 1970-01-01
      • 2020-04-14
      • 2021-09-07
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多