我想尾部 -fa 文件可能包含很长的行。我还希望每个屏幕行看到一行,并在必要时滚动到一侧,就像 Vim 的 zL 和 zH 一样,因此没有换行,
有办法做到这一点吗?理想情况下,无需使用 vim 或 emacs 来完成此任务。使用另一个终端模拟器没问题,但我使用的是 Mac(现在使用 iTerm2)。
我想使用tail follow两个日志文件,但是其中一个日志文件数据太多,所以我想用grep过滤。
tail -f file1 file2|grep mySearch
Run Code Online (Sandbox Code Playgroud)
问题在于这两个文件都通过 grep 运行,或者说 tail 的输出通过 grep 运行。只应使用 mySearch 的 grep 过滤 file2。有任何想法吗?
我尝试过命名管道、进程替换和复合命令。
我想将生成的两个连续文本流合二为一tail -f,并在同一屏幕上观看它们。是否可以?如果有帮助,两个文本流都是面向行的(例如日志)。
更新:只是为了清楚起见,这两个tail -f流不在本地文件上,而是来自两个远程 SSH 会话,例如ssh remote-host tail -f file.log
我有一些长度为 100 到 300 MB 的文本文件,我想在 Emacs 中查看它们,但是我的 Emacs 在打开和遍历如此大的文件时遇到了一些性能问题。因此,我正在寻找一个简单的实用程序来将文件拆分为可管理的块,比如每个 50 MB,并根据原始名称和一些后缀来命名块以指示它们在序列中的位置。每个块都会在前一个被截断的地方拾取,并且不超过 50 MB,最后一个块可能更短。
是否有任何简单的工具可以在 Linux 计算机上执行此操作,例如 head 或 tail 之类的东西,可以提供多个结果,每个块一个?
例如,给定test.out120 MB 长的文件,将其分成test.out.1前 50 MB、后test.out.250 MB 和test.out.3文件末尾的其余 20 MB。
我可以使用的组合head,并tail得到碎片,但我想一个工具,抽象出这一切,也许是一个Perl脚本或Python脚本有人已经创造了做这样的任务呢?
我想要做的是基于 grep 过滤器将一个日志文件的输出过滤为单独的日志文件。
tail -f test.log | tee >(grep "Error" > error.log) >(grep "Warning""> warning.log)
这样所有“错误”条目都在一个文件中,所有“警告”条目都在一个单独的文件中。
我知道这在概念上是有效的,因为如果我使用cat而不是tail,我会得到正确的文件输出,但无法实时跟踪更改(我需要这样做,因为我正在查看主动运行的测试的输出日志)
此外,如果我从grep命令中删除“>”文件重定向器,它会将各个 grep 输出正确输出到控制台;但是,我也想要一个录音文件。
回答:
写入文件时,grep的输出被缓冲。使用带有--line-buffer选项的egrep修复了该行为。
新命令如下所示:
tail -f test.log | tee >(egrep --line-buffered "ERROR" > error.log) >(egrep --line-buffered "WARNING" > warning.log)
有没有办法让tail在它显示的最后几行前面显示一个行号,以便在脚本中使用它时显示文件的增长。
例如:在这样的脚本中使用它时:
while [-z $(ps -p $pid) ]; do
echo "process is running"
.....
tail process.logfile
sleep 15
clear
done
Run Code Online (Sandbox Code Playgroud)
输出应该是:
111线 111
112线 112
113线 113
114线 114
115线 115
....
下一轮应该是:
116 line 116
117 line 117
118 line 118
119 line 119
120 line 120
...
我正在做一个非常标准的tail+ grep:
tail -f some_log_file.txt | grep -q known-string
Run Code Online (Sandbox Code Playgroud)
如果我运行没有以下命令的命令-q:
tail -f some_log_file.txt | grep known-string
Run Code Online (Sandbox Code Playgroud)
我看到输出:
[Tue Feb 12 11:32:45 2019] known-string.
Run Code Online (Sandbox Code Playgroud)
所以我知道grep是匹配的。但是,当我添加-qgrep 命令并没有退出时,它只是挂在那里等待更多输出......即使手册页说它会“如果找到任何匹配项,它将立即以零状态退出”:
Run Code Online (Sandbox Code Playgroud)-q, --quiet, --silent Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or --no-messages option.
谁能解释为什么-q不导致我的 grep 退出?我试图将 a 链接&& beep到最后,以便在grep找到匹配项时发出哔哔声,但除非我可以让它退出,否则将无法正常工作。
我想跟踪一个不断被写入的日志文件,但想排除“常见”的各种条目,所以我只能看到错误等,因为它们被抛出。我可以通过管道传递给 grep -v "pattern",但理想情况下希望使用包含要跳过的条目的文件。有任何想法吗?
我正在尝试获取 /dev/sda2 的最后 1024 个字节。当我这样做时sudo tail -c 1024 /dev/sda2 | hd,提示会一直挂起,直到我按下 Ctrl-C。但是,当 I 时tail -c 1024 ddfilecopyofsda2 | hd,我立即得到文件最后 1024 个字节的不错输出。我在这里读到(https://unix.stackexchange.com/questions/60034/what-are-character-special-and-block-special-files-in-a-unix-system)“块设备通常是可查找的, “那我错过了什么?