bash – 一个grep(或sed或awk)命令,用于选择文件中特定起始行后
发布时间:2020-12-15 19:00:09 所属栏目:安全 来源:网络整理
导读:在Docker Compose的yml文件中,卷在以volumes:line开头的部分中声明,然后是 – host / dir:guest:dir等模式. sections以下一部分的开头结束,其名称不会始终相同,它可以是ports:,environment:和networks:等等中的任何一个.通常有多个卷:section,并且每
在Docker Compose的yml文件中,卷在以volumes:line开头的部分中声明,然后是 – host / dir:guest:dir等模式. sections以下一部分的开头结束,其名称不会始终相同,它可以是ports:,environment:和networks:等等中的任何一个.通常有多个卷:section,并且每个卷中的行数是未知的(并且在卷上不是恒定的:节).
我需要从所有卷中提取所有卷声明(即 – host / dir:guest:dir):yml文件的各个部分. 谢谢! 示例yml文件: version: '2' services: service1: image: repo1/image1 volumes: - /dir1/dir2:/dir3/dir4 - /dir5/dir6:/dir7/dir8 ports: - "80:80" service2: image: repo2/image2 volumes: - /dir9/dir10:/dir11/dir12 environment: - A: B
awk单行
假设你有/每个卷声明 输入: version: '2' services: service1: image: repo1/image1 volumes: - /dir1/dir2:/dir3/dir4 - /dir5/dir6:/dir7/dir8 ports: - "80:80" service2: image: repo2/image2 volumes: - /dir9/dir10:/dir11/dir12 environment: - A: B volumes: - /dir1/dir2:/dir3/dir4 - /dir5/dir6:/dir7/dir8 meow: 输出: $awk '$0!~"/"{a=0} /volumes:/{a=1; next}a' file - /dir1/dir2:/dir3/dir4 - /dir5/dir6:/dir7/dir8 - /dir9/dir10:/dir11/dir12 - /dir1/dir2:/dir3/dir4 - /dir5/dir6:/dir7/dir8 $0!?“/”{a = 0}:如果记录/行不包含/表示它不是卷声明;设a = 0 PS:如果在你的yml文件中包含/的标签可以在卷之后,那么这可能会失败.如果是这种情况,那么使用这个awk: $awk '$1!~"-"{a=0} /volumes:/{a=1; next}a' file 这将重置if第一个字段不是 – (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |