小编lor*_*o-s的帖子

输出到 stdout 并同时 grep 到文件中

我有一个将文本输出到stdout. 我想在我的终端中看到所有这些输出,同时我想过滤一些行并将它们保存在一个文件中。例子:

$ myscript
Line A
Line B
Line C

$ myscript | grep -P 'A|C' > out.file

$ cat out.file
Line A
Line C
Run Code Online (Sandbox Code Playgroud)

我想在终端中查看第一个命令的输出,并将第二个命令的输出保存在一个文件中。同时。我尝试使用tee,但没有结果,或者更好,结果相反

grep pipe tee stdout

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

是否可以直接从 stdin 制作 .tar.gz 文件?或者,我需要将已经压缩的文件压缩在一起

为了澄清标题中的神秘问题,我将确切地告诉您我需要什么。我目前正在使用以下内容对所有数据库进行预定的 MySQL 备份:

mysqldump ... | gzip -c > mysql-backup.gz
Run Code Online (Sandbox Code Playgroud)

这没关系,但我愿意为每个单个数据库制作一个单独的文件,因为这样可以更轻松地查看转储数据或恢复单个数据库:

for db in $dbs; do mysqldump ... $db | gzip -c > mysql-backup-$db.gz; done
Run Code Online (Sandbox Code Playgroud)

我想将每个备份的所有转储存储在一个.tar文件中,即mysql-backup.tar.gz所有转储的数据库都在里面。我知道我可以简单地将.sql文件保持未压缩状态tar -cz *.sql,但是1) 我正在寻找一种不需要临时存储大文件的方法。实际上,在我当前的脚本中,mysqldump是通过管道传输到 的gzip,因此不会创建大文件。

2)是否有类似的方法可以.tar.gz从 stdin创建

3)tar -c *.sql.gz等价于tar -cz *.sql?

tar compression gzip

7
推荐指数
2
解决办法
9145
查看次数

实时日志检查管道尾部、grep 和 cut 的问题

我必须检查不断增长的日志实时,我发现,这让我的问题会错过一些线路使用(我不能什么不懂行)tail -f或者tailfgrepcut

我使用grep是因为我想过滤包含特定单词的行,然后cut -c -NUM因为有些行很长,我不希望它们在我的终端窗口中换行。

这是一个最小的示例,其中我正在观看由“第 N 行”行组成的示例日志,过滤单词“行”,在这种情况下缺少所有行(显然^C是我杀死了进程):

$ tail -n 3 -f log

13th line
14th line
15th line
^C

$ tail -n 3 -f log | grep --color=never 'line'

13th line
14th line
15th line
^C

$ echo $COLUMNS

100

$ tail -n 3 -f log | grep --color=never 'line' | cut -c -$COLUMNS

^C
Run Code Online (Sandbox Code Playgroud)

请注意,此问题tail …

grep logs tail cut

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

标签 统计

grep ×2

compression ×1

cut ×1

gzip ×1

logs ×1

pipe ×1

stdout ×1

tail ×1

tar ×1

tee ×1