linux - 使用 shell 脚本将两个命令的输出合并到一个表中

标签 linux shell unix awk

我想显示如下命令的输出:

1)

mount | grep -i "/dev/sd*" | awk '{ print NR "\t" $1 "\t" $3 }'

2)

/usr/sbin/smartctl -a /dev/sdb | grep Device: | awk '{print $2 }'

第一个命令显示 3 列多行,下一个命令显示一列信息。

我想连接命令和连接的输出,并显示为 4 列多行。请提出建议。

最佳答案

这就是 paste 的用途。使用 process substitution让 shell 像对待文件一样对待你的命令:

paste <(mount | awk 'tolower($0) ~ /\/dev\/sd*/ {print NR "\t" $1 "\t" $3}') \
      <(/usr/sbin/smartctl -a /dev/sdb | awk '/Device:/ {print $2}')

我删除了 awk 可以轻松执行的 grep 命令。

关于linux - 使用 shell 脚本将两个命令的输出合并到一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7980711/

相关文章:

python - 使用 Python 从 linux 命令行读取

mysql - 在shell脚本中将字符串转换为xml?

shell - UNIX 脚本 - 查找文件 - 显示日期

unix - Vim 语法高亮 : make region only match on one line

unix - 在 FreeBSD 中安装 VIM

linux - 真正从 Bash 中的列表中获取输入时

linux - 从代码块 { } 退出整个脚本

linux - 使用 wget 和 SFTP 获取文件

php - 在 PHP/Apache/Linux 环境中,为什么 chmod 777 是危险的?

c - 如何知道进程是父进程还是子进程