我正在尝试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) 我想知道是否有办法让 Vim 表现得像tail -f.
即使是迄今为止我发现的最好的Vim 插件也不能达到我的预期。
我真的很想实时看到文件更新。即使我远离键盘,我也希望 Vim 不断重新加载缓冲区并跳转到最后一行。
这该怎么做?
(我不想重新加载整个文件,因为有些日志文件非常大。最好是只加载最后几行,就像tail -f做的那样。)
我写的一个脚本做了一些事情,最后,在它自己的日志文件中附加了一些行。我只想保留日志文件的最后 n 行(比如 1000 行)。这可以在脚本的末尾以这种方式完成:
tail -n 1000 myscript.log > myscript.log.tmp
mv -f myscript.log.tmp myscript.log
Run Code Online (Sandbox Code Playgroud)
但是有更干净优雅的解决方案吗?也许通过单个命令完成?
为什么以下命令不产生任何输出?
$ 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)。
正在按顺序下载文件wget。
如果我开始用 解压它cat myfile.tar.bz2 | tar -xj,它可能会正确解压或因“意外 EOF”而失败,具体取决于哪个速度更快。
如何“跟踪”文件,即将文件内容输出到标准输出,但不要在 EOF 上退出,而是继续订阅该文件并继续输出数据的新部分,仅在文件被关闭时退出writer 并且在 N 秒内没有重新打开。
我根据@arielCo 的回答创建了一个脚本cat_and_follow,该脚本也终止了不再打开文件进行写入的时间。tail
我当然知道
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。
我正在尝试使用tail -f -n 50 filename. 我从文件中获取信息就好了,但我总是收到此错误消息:
尾部:无法识别的文件系统类型 0xbeefdead
它发生在每个文件上。该0xbeefdead让我担心-它看起来像一个黑客标签。
$ tail --version
tail (GNU coreutils) 8.4
Run Code Online (Sandbox Code Playgroud) 可以更少地跟随(按 F)管道输入(类似于文件)吗?对于正在写入的文件,命令
less <file>
Run Code Online (Sandbox Code Playgroud)
按 F 时将跟随文件。
但是如果我有一个命令将输出直接输入到less中,就像这样
command | less
Run Code Online (Sandbox Code Playgroud)
按 F 什么也不做。
所以看起来管道不能像文件一样被跟踪?或者它可能与写入 STDERR 的命令有关?我想要达到的效果总是看到命令的最新输出:就像按住 PageDown 一样!
一个相关的评论适用于 G(转到结尾):当直接管道到 less 时,它将不起作用。
我有 200 行的文件。
我需要从 10 到 100 中提取行并将它们放入一个新文件中。
你如何在 unix/Linux 中做到这一点?
您可以使用哪些可能的命令?