Linux 将两个输出显示为两个单独的列| bash
我有两个来自2个命令的输出:Linux 将两个输出显示为两个单独的列| bash,linux,bash,Linux,Bash,我有两个来自2个命令的输出: comm1=`ip a | grep ens | grep -v lo | cut -d' ' -f2` 输出示例: >eth1 命令二 comm2=`ip a | grep inet| grep -v inet6 | grep -v 127 | cut -d' ' -f6` 输出示例: >123.156.789 234.167.290 148.193.198 138.25.49 142.137.154 125.175.166
comm1=`ip a | grep ens | grep -v lo | cut -d' ' -f2`
输出示例:
>eth1
命令二
comm2=`ip a | grep inet| grep -v inet6 | grep -v 127 | cut -d' ' -f6`
输出示例:
>123.156.789
234.167.290
148.193.198
138.25.49
142.137.154
125.175.166
246.173.7
154.167.67
期望输出:
echo "$comm1 $comm2"
> eth1 123.156.789
234.167.290
148.193.198
138.25.49
142.137.154
125.175.166
246.173.7
154.167.67
如果这是单行输出,那么列-t工作正常
echo "$comm1 $comm2" | column -t
但在这种情况下,当其中一列为多行时,它不起作用。。
寻找有效的解决方案
已编辑您可能需要粘贴命令
$ seq 1 3 > a.txt
$ seq 5 10 > b.txt
$ paste a.txt b.txt
1 5
2 6
3 7
8
9
10
您可能需要
粘贴命令
$ seq 1 3 > a.txt
$ seq 5 10 > b.txt
$ paste a.txt b.txt
1 5
2 6
3 7
8
9
10
您可以使用命令粘贴,例如:
$ paste <(comm1) <(comm2)
$paste您可以使用命令paste
,例如:
$ paste <(comm1) <(comm2)
$粘贴您所需的输出似乎不包含任何多行字符串。请编辑您的问题,以表明您希望对多行字符串发生什么。顺便说一句,这种讨厌的大管道通常是一种代码气味。只需一次调用awk
就可以完成所有grep
和cut
的工作……坦率地说,不能保证今天字段6上的信息明天会在字段6上,因此,最好将cut
替换为实际查看字符串内部并且仅依赖于文档格式保证的内容。例如,如果您想在addr
之后输入单词,请匹配它,因为它是addr
之后的单词,而不是因为它是行中的第六个单词。@Charles Duffy,我乐于接受建议,谢谢您想要的输出似乎不包含任何多行字符串。请编辑您的问题,以表明您希望对多行字符串发生什么。顺便说一句,这种讨厌的大管道通常是一种代码气味。只需一次调用awk
就可以完成所有grep
和cut
的工作……坦率地说,不能保证今天字段6上的信息明天会在字段6上,因此,最好将cut
替换为实际查看字符串内部并且仅依赖于文档格式保证的内容。例如,如果你想在addr
之后找到一个单词,那么就匹配它,因为它是addr
之后的单词,而不是因为它是行中的第六个单词。@Charles Duffy,我愿意接受建议,谢谢