我担心这是一项非常简单的任务,但我发现没有任何相关内容,所以这里也是如此。
我有一个文本文件,我从几个主机获取。基于SSH脚本获取数据的方式,它基本上是我正在执行的命令的输出,因此,输出,然后输出然后输出,例如下面。
hostname
1:card/function
2:card/function
3:card/function
4:card/function
5:card/function
6:card/function
7:card/function
8:card/function
9:card/fucntion
hostname
1:card/function
2:card/function
3:card/function
4:card/function
5:card/function
6:card/function
7:card/function
8:card/function
9:card/function
这重复了很多次。
我想格式化输出,以便;
HOSTNAME | Slot1 | Slot2 | Slot3 | ....... Slot9 |
hostname 1:card/function 2:card/function 3:card/function .......9:card/function
hostname 1:card/function 2:card/function 3:card/function .......9:card/function
答案 0 :(得分:0)
您可以使用此awk
awk '{$1=$1;printf (/hostname/&&NR>1?RS:"")"%s ",$0} END {print ""}'
hostname 1:card/function 2:card/function 3:card/function 4:card/function 5:card/function 6:card/function 7:card/function 8:card/function 9:card/fucntion
hostname 1:card/function 2:card/function 3:card/function 4:card/function 5:card/function 6:card/function 7:card/function 8:card/function 9:card/fucntion
您的数据在某些行后似乎有空格。 $1=$1
解决了这个问题。
答案 1 :(得分:0)
awk '{printf "%s%s" , (NR>1&&(!/^[0-9]/)?"\n":""),$0} END{print ""}' file
这允许动态(真实)主机名字符串。
(有效的主机名不允许以数字开头,如果您的真实数据没有像number:
这样的开头1:....
,您可以检查/(slash)
,有效的主机名没有'允许slash
。