我想要tail -f一个文件,但它的内容是sjis编码的,所以我需要将它转换为我的终端的本机 (utf-8) 编码。
当我做
尾-fx | iconv -fsjis
不会有输出。作为
尾巴 x | iconv -fsjis
确实有效,起初我认为这是一个缓冲问题,但尝试unbuffer并stdbuf按照关闭管道中的缓冲没有帮助。
实际上,即使在 x 中添加了 10k 以上的数据,也不会有输出,所以我想这不是缓冲问题(缓冲区是 4k,如果我没记错的话),但是 iconv 只会在它收到一个EOF。
那么我怎样才能跟随我的 sjis 编码文件呢?
当我SELECT使用 MySQL Workbench查看 a 的结果时,使用一个\是正确的
max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
> SELECT
> DISTINCT i.filesourceregexp
> FROM db.ImportLogFiles i'
+------------------------------------------------+
| filesourceregexp |
+------------------------------------------------+
| ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ |
| ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ |
| ^[0-9]{8}_1062355673_store_visits_report\.csv$ |
+------------------------------------------------+
max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
SELECT
DISTINCT i.filesourceregexp
FROM db.ImportLogFiles i' | tail -n +2
^[0-9]{8}_1062355673_merge_google_pbn\\.csv$
^[0-9]{8}_8026062435_merge_google_pbn\\.csv$
^[0-9]{8}_1062355673_store_visits_report\\.csv$
max@host 10:14:19: ~$
Run Code Online (Sandbox Code Playgroud)
我有这些选项my.cnf:
[client]
host = db-master
user = …Run Code Online (Sandbox Code Playgroud) 执行 a 时tail -f error.log,如何在 3 秒内未向文件附加任何内容后以编程方式插入换行符?
(显然,一旦添加了一个换行符,在将另一行文本添加到日志文件之前,不应添加其他换行符)
例如,这些行被附加到 error.log :
foo
bar
boo [[wait 4 seconds]]
2far
2foo
2bar
2boo [[wait 40 seconds]]
2far
Run Code Online (Sandbox Code Playgroud)
这将是控制台中的输出:
foo
bar
boo
2far
2foo
2bar
2boo
2far
Run Code Online (Sandbox Code Playgroud) 我正在使用尾随日志文件tail -f messages.log,这是输出的一部分:
Run Code Online (Sandbox Code Playgroud)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eget tellus sit amet odio porttitor rhoncus. Donec consequat diam sit amet tellus viverra pellentesque. tail: messages.log: file truncated Suspendisse at risus id neque pharetra finibus in facilisis ipsum.
它显示tail: messages.log: file truncated文件何时被自动截断并且应该发生这种情况,但我只想tail向我显示没有此截断消息的输出。
我试过使用,tail -f messages.log | grep -v truncated但它仍然向我显示消息。
有什么方法可以抑制此消息?
我正在尝试观察日志文件的任何新输出。另一个脚本(不受我控制)正在删除该文件,然后创建一个具有相同名称的新文件。使用tail -f不起作用,因为文件正在被删除。
我有一个生成文件“Detail.out”的脚本。我知道只要文件包含一定数量的行(大约 21025),脚本就会完成。所以我发现自己坐在命令提示符下运行:
[me@somewhere myDir]$ wc -l */Detail.out
21025 A/Detail.out
21025 B/Detail.out
21025 C/Detail.out
12995 D/Detail.out
10652 E/Detail.out
3481 F/Detail.out
21027 G/Detail.out
21025 H/Detail.out
21025 I/Detail.out
... ...
Run Code Online (Sandbox Code Playgroud)
我曾经tail -f看过一个特定的文件,但我想按照wc -l */Detail.out上面显示的命令的输出进行操作。 这可能吗?tcsh如果这很重要, 我目前正在Ubuntu 11.04 中使用。
我tail用来监视我知道将其进度写入磁盘的作业的进度。几乎总是,我知道他们在开始运行之前将创建哪个文件(作业由超级计算机上的调度程序调度)
tail在创建这些文件之前,有没有办法处理它们?我想这样做,同时避免竞争条件和/或对作业写入磁盘的方式或时间做出假设。
我能够成功运行此命令:
tail -f my_file.txt | grep foo
Run Code Online (Sandbox Code Playgroud)
它只显示带有字符串 的行foo,并且一直显示它们。
但是当我运行这个命令时:
tail -f my_file.txt | grep foo | grep bar
Run Code Online (Sandbox Code Playgroud)
它不显示任何行,即使有些行同时包含foo和bar。
我知道有一个在一次grep调用中使用多种模式的解决方案,但我想知道为什么这条线失败了。
我开始在后台下载一个大文件使用
$ nohup wget http://example.tld/big.iso &
Run Code Online (Sandbox Code Playgroud)
这也给了我一个nohup.out包含wget.
现在,如果我以后想观看下载过程,我可以使用,$ tail -f nohup.out但这会比我希望的更快地填满我的终端窗口。我想看到的是最后一行不断更新(就像wget单独使用时一样)。
我试过了,$ tail -n 1 -f nohup.out但它似乎只影响最初的tailin'。
一般来说,如果可以限制(在这种情况下为 1)命令的输出可用/可见的行数,它将解决这个问题。有点在循环缓冲区中输出- 想想正常的进度条$ wget example.tld/big.iso会打印。
有这样的解决方案吗?
还是我爬树的方式不对?(意思是,限制nohup输出或做其他事情会更容易吗?)
所以这是家庭作业,但我不会问具体的家庭作业问题。
我需要使用 head 和 tail 从一个文件中获取不同的行集。所以像第 6-11 行和第 19-24 行一样,将它们都保存到另一个文件中。我知道我可以使用 append 来做到这一点,例如
head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1.
Run Code Online (Sandbox Code Playgroud)
但我认为我们不应该这样做。
有没有一种特定的方法可以组合 head 和 tail 命令然后保存到文件中?