如何将grep的每个输出传递给另一个命令?

时间:2018-06-07 16:20:06

标签: shell grep xargs

我有一个命令,它返回数据库中的表列表:

drush sqlq "show tables"|grep deleted

这将返回需要删除的表的列表:

field_deleted_data_811d267471
field_deleted_data_e52abfde52
field_deleted_data_eefd3bb8fd

我正在尝试将每个结果行和管道输入命令

drush sqlq "drop table TABLENAME"

我正在尝试建立类似的东西 drush sqlq "show tables"|grep deleted |xargs -n1 drush sqlq "drop table ${TABLE_NAME}"其中TABLE_NAME输出的每一行。

saw the question但仍然不清楚如何访问管道命令中的每个结果行。

1 个答案:

答案 0 :(得分:3)

xargs-I<STRING>在运行命令之前将被替换,在您的情况下将是例如:

drush sqlq "show tables"|grep deleted |xargs -I@ -n1 drush sqlq "drop table @"