标签: tail

从 grep 到 awk 的管道不起作用

我正在尝试grep进行tail文件日志并n从一行中获取第th 个单词。示例文件:

$ cat > test.txt <<EOL
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
EOL
^C
Run Code Online (Sandbox Code Playgroud)

现在,如果我做一个tail

$ tail -f test.txt
Beam goes blah
John goes hey
Beam goes what?
John goes forget it
Beam goes okay
Beam goes bye
^C
Run Code Online (Sandbox Code Playgroud)

如果我grep认为tail

$ tail -f test.txt | grep Beam
Beam goes blah
Beam goes what?
Beam …
Run Code Online (Sandbox Code Playgroud)

grep bash rhel awk tail

41
推荐指数
2
解决办法
9万
查看次数

如何让 Vim 表现得像“tail -f”?

我想知道是否有办法让 Vim 表现得像tail -f.
即使是迄今为止我发现的最好的Vim 插件也不能达到我的预期。

我真的很想实时看到文件更新。即使我远离键盘,我也希望 Vim 不断重新加载缓冲区并跳转到最后一行。

这该怎么做?
(我不想重新加载整个文件,因为有些日志文件非常大。最好是只加载最后几行,就像tail -f做的那样。)

vim tail

40
推荐指数
3
解决办法
3万
查看次数

`tail -f` 比 `less +F` 更有效吗?

这篇文章指出了使用less +Fover 的一些原因tail -f。大多数原因与功能有关,而不是技术原因:less +F可以突出显示、搜索、浏览文件。

怎么样的技术原因是什么?

AFAIK,less使用轮询每一秒更新文件,同时tail,如POSIX定义使用一个循环,1秒睡觉和副本可用任何字节。这已经足够了,但 POSIX 还鼓励实现使用更有效的方法。至少GNU tail使用inotify,所以效率更高。

less 还将文件内容保存在内存中,因此对于大文件(如几 GB),它会降低您的计算机速度。

那么,还有其他技术原因可以使用tail -foverless +F吗?

less tail

38
推荐指数
1
解决办法
1万
查看次数

如何只保留日志文件的最后 n 行?

我写的一个脚本做了一些事情,最后,在它自己的日志文件中附加了一些行。我只想保留日志文件的最后 n 行(比如 1000 行)。这可以在脚本的末尾以这种方式完成:

tail -n 1000 myscript.log > myscript.log.tmp
mv -f myscript.log.tmp myscript.log
Run Code Online (Sandbox Code Playgroud)

但是有更干净优雅的解决方案吗?也许通过单个命令完成?

logs tail text-processing

38
推荐指数
3
解决办法
6万
查看次数

为什么“tail -f ... | tail”无法产生任何输出?

为什么以下命令不产生任何输出?

$ tail -f /etc/passwd | tail
Run Code Online (Sandbox Code Playgroud)

阅读有关缓冲后,我尝试了以下无济于事:

$ tail -f /etc/passwd | stdbuf -oL tail
Run Code Online (Sandbox Code Playgroud)

请注意,以下确实会产生输出:

$ tail /etc/passwd | tail
Run Code Online (Sandbox Code Playgroud)

这样做也是如此:

$ tail -f /etc/passwd | head
Run Code Online (Sandbox Code Playgroud)

我使用的是尾部版本 8.21(GNU coreutils)。

pipe tail

37
推荐指数
3
解决办法
1万
查看次数

我如何“跟踪”一个文件?

正在按顺序下载文件wget

如果我开始用 解压它cat myfile.tar.bz2 | tar -xj,它可能会正确解压或因“意外 EOF”而失败,具体取决于哪个速度更快。

如何“跟踪”文件,即将文件内容输出到标准输出,但不要在 EOF 上退出,而是继续订阅该文件并继续输出数据的新部分,仅在文件被关闭时退出writer 并且在 N 秒内没有重新打开。


我根据@arielCo 的回答创建了一个脚本cat_and_follow,该脚本也终止了不再打开文件进行写入的时间。tail

pipe tail open-files files cat

33
推荐指数
3
解决办法
2万
查看次数

如何使用 gnu texttools 执行连续的“wc -l”?

我当然知道

cat logfile.txt | wc -l
120
Run Code Online (Sandbox Code Playgroud)

会告诉我文件中的行数。

然而

tail -f logfile.txt
Run Code Online (Sandbox Code Playgroud)

将向我显示另一个程序写入的新行logfile.txt

是否可以将两者结合起来,以便我使用标准文本实用程序获得 logfile.txt 的连续更新行数?

我知道

watch wc -l logfile.txt
Run Code Online (Sandbox Code Playgroud)

但我不想每次都重新计算整个文件,这似乎是一种浪费。每隔一秒左右就需要一个仅附加的计数,并且可能在行尾使用一个\r而不是一个\n

shell bash logs tail text-processing

32
推荐指数
2
解决办法
1万
查看次数

我是否需要担心“tail: unrecognized file system type 0xbeefdead”?

我正在尝试使用tail -f -n 50 filename. 我从文件中获取信息就好了,但我总是收到此错误消息:

尾部:无法识别的文件系统类型 0xbeefdead

它发生在每个文件上。该0xbeefdead让我担心-它看起来像一个黑客标签。

$ tail --version
tail (GNU coreutils) 8.4
Run Code Online (Sandbox Code Playgroud)

tail

32
推荐指数
1
解决办法
2万
查看次数

跟随管道使用较少?

可以更少地跟随(按 F)管道输入(类似于文件)吗?对于正在写入的文件,命令

less <file>
Run Code Online (Sandbox Code Playgroud)

按 F 时将跟随文件。

但是如果我有一个命令将输出直接输入到less中,就像这样

command | less
Run Code Online (Sandbox Code Playgroud)

按 F 什么也不做。

所以看起来管道不能像文件一样被跟踪?或者它可能与写入 STDERR 的命令有关?我想要达到的效果总是看到命令的最新输出:就像按住 PageDown 一样!

一个相关的评论适用于 G(转到结尾):当直接管道到 less 时,它将不起作用。

less pipe tail

31
推荐指数
2
解决办法
2万
查看次数

如何将 200 行文件中的第 10 行到 100 行放入新文件中

我有 200 行的文件。

我需要从 10 到 100 中提取行并将它们放入一个新文件中。

你如何在 unix/Linux 中做到这一点?

您可以使用哪些可能的命令?

sed tail text-processing head

29
推荐指数
3
解决办法
21万
查看次数

标签 统计

tail ×10

pipe ×3

text-processing ×3

bash ×2

less ×2

logs ×2

awk ×1

cat ×1

files ×1

grep ×1

head ×1

open-files ×1

rhel ×1

sed ×1

shell ×1

vim ×1