这是一个 SED 问题。
我正在使用 Quartz Composer (Mac OSX) 脚本来:
- 从目录中打开最后一个 .log。
- 获取该文件的最后一个文本行并删除其前 24 个字符。
- 每次在最后一个 .log 中创建新行时显示最后一行
我想这会很简单。目前,我已经在 QC 中完成了这项工作,并且几乎可以正常工作。但是我在getFileName.sh和getLastLineOfLog.sh中的 SED 命令都有问题
获取文件名.sh
#!/bin/bash
cd /Users/Me/
/bin/echo `ls -tr *.log | tail -1`
我在这里需要的是打开最后一个 .log 文件,这个名称结构127.0.0.1,NUMBER.log是 NUMBER 部分,一个 5 位数字。数字越大,.log 文件越新。现在,它只打开第一个 .log 文件。
请问您知道如何在 SED 中编写正确的命令吗?
getLastLineOfLog.sh
#!/bin/bash
/usr/bin/tail -1 /Users/Me/$1 | sed 's/^.\{24\}//' > /Users/Me/$1.log
echo `/usr/bin/tail -1 /Users/Me/$1.log`
在第二个文件中,我尝试获取加载的 .log 的最后一个文件,并在不包含 24 个第一个字符的情况下回显它。它可以工作,但会创建一个新的 .log.log。(等)文件每次函数通过时,我想避免的事情。
是否需要将 SED 命令的结果输出到新文件?怎么能做到尽可能简单呢?
先感谢您。