1、使用场景
将有规律的每组(一组2行)的单数行和双数行合并为一行,以空格分割。
比如使用pssh批量得出的结果,想让ip行和结果行合并为一行(前提如上所述)
[root@k8s-master1 tmp]# pssh -h iplist -i 'hostname'
[1] 18:12:42 [SUCCESS] 192.168.164.30
k8s-node1
[2] 18:12:42 [SUCCESS] 192.168.164.40
k8s-node2
把多余的行给删除掉,保留只有一个ip行和你想要的结果行,这利用grep -v 能轻易实现,然后再用下面的脚本去合并结果就行了
2、python脚本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 将有规律的每组(一组2行)的单数行和双数行合并为一行,以空格分割
# 将你的pssh得到的数据放到result.txt中,然后运行本脚本。如果单数行不是[开头,则会报错提示你修改,修改好之后再重新运行本脚本
file_path = './result.txt' # pssh生成的有规律的1行ip一行结果。如果不是这样有规律的需要整理。
x_index = 1
with open(file_path, encoding='utf-8') as file:
content = file.read()
for i in content.splitlines():
if x_index % 2:
if not i.startswith("["): # 判断单行的开头如果不是以“["就说明有问题,程序自动退出。
print(f"************Line {x_index} ERROR****************")
exit(1)
print(i, end=" ") # 打印单数行后用空格结尾,便于连接双数行
else:
print(i) # 打印双数行,自动换行
x_index += 1
注:将你的批量结果保存在和本脚本同一目录下,且文件名为result.txt,然后执行本脚本即可打印出结果
3、python脚本输出结果示例
[1] 18:12:42 [SUCCESS] 192.168.164.30 k8s-node1
[2] 18:12:42 [SUCCESS] 192.168.164.40 k8s-node2