我有以下内容和一个名为的文件file.txt
TIMESTAMP 200 J8899
INSTANCES 19 x86_64 False i-xxx1a1a t2.medium True subnet-93b224fb hvm vpc-7b801
STATE 16 running
TIMESTAMP 300 J2099
INSTANCES 18 x86_64 False i-xxx1a1b t2.medium True subnet-93b224fb hvm vpc-7b801
STATE 16 running
现在我想打印以下输出
i-xxx1a1a : running
i-xxx1a1b : running
请注意以 开头的行TIMESTAMP, INSTANCES, STATE
是新行
我尝试这样做,但没有成功
grep -Ew "实例|状态" file.txt | awk '{打印$0}'
答案1
你可以只使用 awk:
awk '/INSTANCES/{ thing = $5; } /STATE/ { print thing,":",$NF; }' file.txt
这假设相关的 STATE 总是出现在 INSTANCE 之后。此外,如果实例缺少状态,它将跳过整个实例。