如何按固定步长从文本文件中提取指定行,可使用awk、sed实现吗
实现方法
你要提取的行符合「从第3行开始,每间隔6行取1行」的规则,以下是几种常用的命令实现方案:
1. sed 实现(最简洁)
sed -n '3~6p' 你的文件名
参数说明:
-n关闭sed默认的全量输出,只打印匹配到的行3~6p表示匹配行号从3开始,每次递增6的行,p指令执行打印操作
2. awk 实现(适配固定行号规则场景)
awk 'NR % 6 == 3' 你的文件名
参数说明:
NR是awk内置变量,表示当前处理的行号- 行号对6取余等于3时,awk会执行默认的打印当前行操作,正好匹配你要的3、9、15...行的规则
3. awk 实现(适配内容规则场景,不依赖固定行号)
如果后续文件结构变动、行号不固定,但你需要的都是每个块中第一个字段为1P1的行,可以用内容匹配的方式:
awk '$1 == "1P1"' 你的文件名
这种方式鲁棒性更强,不受整体行号变动影响。
以上所有命令都是流式处理,无需一次性加载整个文件到内存,完全适合大体积文本文件的处理需求。
内容的提问来源于stack exchange,提问作者Mahesh
相关产品推荐
相关产品推荐

