bash - mysqldump - 将 greped STDERR 重定向到文件
问题描述
mysqldump
生成 STDOUT(用于转储 *.sql),还生成 STDERR - 我需要过滤 + 写入文件。
mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 2>> '/srv/www/data_appsrv/logs/mysql_date_ym.log' > '/mnt/backup_srv/backup/daily/file_nm.sql'
上面的代码会将 STDERR 写入mysql_date_ym.log
我需要Warning: Using a password
从写入的 STDERR 中排除字符串mysql_date_ym.log
我尝试了 , 和 的变体grep
,2>>
但>
没有一个有效。
解决方案
这应该工作
command 1>stdout.txt 2> >(grep -v "Thing to remove from stderr" >stderr.txt)
这会将 STDOUT 重定向到 stdout.txt,并通过进程替换将 STDERR 重定向到 grep 过滤器,然后最终重定向到 stderr.txt。
所以你的完整命令看起来像这样
mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 1>'/mnt/backup_srv/backup/daily/file_nm.sql' 2> >(grep -v "Warning: Using a password" > '/srv/www/data_appsrv/logs/mysql_date_ym.log')
在将 STDOUT/STDERR 通常重定向到输出文件后,您还可以使用 sed 脚本在 mysql_date_ym.log 文件上运行。
sed -i 's/Warning: Using a password//g' mysql_date_ym.log
推荐阅读
- sql - 用 sql/rails 比较两个日期
- excel - VBA:带有两个条件的 If 语句的错误 13
- windows - 是否有适用于 Windows 的预建 clang 库?
- oracle - 更新每组的第一行 - Oracle
- javascript - 如何根据 CSV 中的坐标在 Leaflet 中绘制圆形标记?
- java - 无法使用 Apache Spark 读取本地 .parquet 文件
- node.js - 如何使用 web3 从 nodejs 应用程序调用智能合约
- javascript - $.ajax 没有绝对文件系统路径的请求负载
- javascript - 如何在获取网络错误时获取 url
- c# - 如何在 TFS 2017 中获取自动化测试的当前运行 ID