linux - 如何提取由多行星号分隔的文件的特定部分?
问题描述
我正在尝试从由多行 * 字符分隔的文件中提取文本的不同部分。该文件的内容如下所示:
**************************
**************************
abc123
abc1234
**************************
**************************
123abc
**************************
12ab34
**************************
**************************
12345
**************************
**************************
6789
abcd
1234
**************************
**************************
提取例如文件的第五部分的方法是什么?
第五部分包含以下行:
6789
abcd
1234
我尝试使用grep
:
grep -E -v '([^\*]*\*)' filename
该命令的输出是:
abc123
abc1234
123abc
12ab34
12345
6789
abcd
1234
解决方案
编辑:在这里添加一个更通用的解决方案。
awk '/^\*+/{if(prev!~/^\*/){count++}} count==5 && !/^\*/;{prev=$0}' Input_file
您能否尝试使用 GNU 进行跟踪、编写和测试,awk
并且仅显示示例。
awk -v FS="*+" -v RS="^$" '{gsub(/^\n+|\n+$/,"",$10);print $10}' Input_file
第二种解决方案:更通用的解决方案。
awk '/^\*/{count++} count==9 && $0!~/^\*/' Input_file
推荐阅读
- kubernetes - Kubernetes Networkpolicy 不会阻塞流量
- doctrine-orm - 平台不支持 Doctrine getSequenceNextValSQL?
- flutter - 在状态类中使用私有字段的感觉
- python - 如何使用 python 读取文本文件并将特定单词保存到 csv 或其他文本文件中
- wifi - 不能在 Airgeddon 中使用 Evil Twin Attack 吗?
- arrays - 将列表/数组的元素乘以python中的数字的函数
- flutter - 如何修复“使用不包含 AutoRouter 的上下文请求的 AutoRouter 操作。” 在颤振?
- flutter - 从对话框访问提供程序以获取 Flutter 钩子
- sql - 排除具有数字字符的行,仅在行首
- java - 3D 旋转扭曲立方体