通常,当用户想要查看运行某项操作的特定输出行时,可以这样做:
./a.out | grep IHaveThisString但是,如果IHaveThisString是每次都会改变的东西,所以您需要首先运行它,观察输出以获取IHaveThisString在该特定运行中的内容,然后对其进行grep,该怎么办呢?我可以只转储到文件,然后grep,但有没有可能做一些事情,如背景,然后把它带到前台,把它带回来,但现在管道到一些grep?类似于:
./a.out
Ctrl-Z
fg | grep NowIKnowThisString只是好奇..。
发布于 2012-07-12 05:12:12
简写:您可以这样做,但您需要知道您需要提前完成;这不是可以在事后交互地放在适当位置的东西。
编写脚本以确定字符串是什么。我们需要一个更详细的输出格式示例,以提供更好的用法示例,但这里有一个用于简单情况的示例,其中整个第一行都是过滤目标:
run_my_command | { read string_to_filter_for; fgrep -e "$string_to_filter_for" }根据需要使用尽可能多的命令替换read string_to_filter_for,以读取足够的输入来确定目标字符串;如果需要,这可能是一个循环。
例如,假设输出包含以下内容:
Session id: foobar然后,您希望对包含foobar的行执行grep。
...then您可以通过管道通过以下脚本:
re='Session id: (.*)'
while read; do
if [[ $REPLY =~ $re ]] ; then
target=${BASH_REMATCH[1]}
break
else
# if you want to print the preamble; leave this out otherwise
printf '%s\n' "$REPLY"
fi
done
[[ $target ]] && grep -F -e "$target"如果您想手动指定过滤器目标,可以通过让循环检查正在使用过滤器内容创建的文件,并在以后启动grep时使用它来实现。
发布于 2012-07-12 05:01:18
不,只有当你没有用其他方式保存它时,它才会在你的屏幕缓冲区中。
发布于 2012-07-12 05:08:46
这有点奇怪,你需要什么,但你可以这样做:
script会话;grep。示例:
$ script
$ ./a.out
Ctrl-Z
$ fg
$ grep NowIKnowThisString typescripthttps://stackoverflow.com/questions/11440951
复制相似问题