regex - 在 SED 命令中传递多个文件 : Log Extract

标签 regex linux bash unix sed

我正在尝试在特定时间戳内从我的应用程序中提取日志。所以我写了下面的脚本

a= echo $1 | sed 's/\//\\\//g';
b= echo $2 | sed 's/\//\\\//g';

sed -n "/$a/,/$b/p" $3;

这里 $1 和 $2 是我想要日志的时间戳,$3 是我想要的文件。

如果我传递单个文件,此脚本将完美运行。但是,如果我将多个文件或目录作为参数,它不会给出任何输出。

这就是我执行脚本的方式

extract.sh '6/30/14 9:03' '6/30/14 9:05' abc_*/SysOut.log

SED 可以处理多个文件吗,或者问题出在 UNIX 上,它在将文件作为参数传递方面存在限制

在这方面有什么帮助建议吗?

最佳答案

你的 sed 命令应该是

sed -n "/$a/,/$b/p" -- "${@:3}"

请注意,如果您不使用 Bash,您可以在运行 sed 之前先转换这些参数:

shift 2
sed -n "/$a/,/$b/p" -- "$@"

关于regex - 在 SED 命令中传递多个文件 : Log Extract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532636/

相关文章:

linux - Bash ARGS 帮助 - 获取随机错误

javascript - 使用javascript从字符串中解析youtube视频id

Java 正则表达式 : How to extract ip address except the last part from the string?

linux - 在 fork 之前或之后对磁盘文件调用 mmap() 有什么区别?

c - malloc 将 errno 设置为 EAGAIN

c++ - 如何从控制台读取行并将其存储到 C++ 中的字符串中?

linux - 收集文件名的 bash 脚本似乎被空格弄糊涂了

regex - 非正则上下文无关语言和无限正则子语言

javascript - 在 AngularJS 中仅接受字母数字和 1 点

linux - 我想将输出通过管道传输到 bash 中的多个文件