mysqldump - 将 greped STDERR 重定向到一个文件
mysqldump - redirect greped STDERR to a file
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
我需要从写入 mysql_date_ym.log
的 STDERR 中排除 Warning: Using a password
字符串
我尝试了 grep
、2>>
和 >
的变体,但 none 有效。
这应该有效
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
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
我需要从写入 mysql_date_ym.log
Warning: Using a password
字符串
我尝试了 grep
、2>>
和 >
的变体,但 none 有效。
这应该有效
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